Sendlane · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Sendlane v2 API

10 actions 10 updates update extends ../openapi/sendlane-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Sendlane's API. It is a proposal applied on top of the contract, not a document Sendlane publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apis-io-sourcex-apis-io-spec-sourcex-apis-io-harvestedx-logotermsOfServicex-supportx-rate-limitsx-pagination

Targets 6

$.info
$
$.components.securitySchemes.BearerToken
$.components.securitySchemes.OtherAccountBearerToken
$.paths['/contacts/{contactId}/sms-consent']
$.servers

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Sendlane v2 API
  version: 1.0.0
x-provenance:
  generated: '2026-08-13'
  method: generated
  source: openapi/sendlane-openapi.yml
  note: >-
    Captures API Evangelist's enrichment as an OpenAPI Overlay 1.0.0 document
    rather than mutating the provider's published spec. Every action below adds
    information we established from Sendlane's own documentation and from live
    probes — the undocumented status codes, the published rate limit, the
    pagination contract and the absent-idempotency finding. Apply with any Overlay
    1.0.0 processor against openapi/sendlane-openapi.yml.
extends: ../openapi/sendlane-openapi.yml
actions:
  - target: $.info
    description: Record provenance and the docs entry point on the info object.
    update:
      x-apis-io-source: https://sendlane.stoplight.io/docs/api-documentation/c53add3c8b16f-overview
      x-apis-io-spec-source: https://stoplight.io/api/v1/projects/sendlane/api-documentation/nodes/sendlane-v2.v2.yaml?fromExportButton=true&snapshotType=http_service
      x-apis-io-harvested: '2026-08-13'
      x-logo:
        url: https://kinlane-images.s3.amazonaws.com/shared/apis-json/icons/sendlane.png

  - target: $.info
    description: >-
      Attach the license/terms and support links the provider publishes but the spec
      omits.
    update:
      termsOfService: https://www.sendlane.com/terms
      x-support:
        email: support@sendlane.com
        knowledge_base: https://help.sendlane.com/
        status_page: https://status.sendlane.com/

  - target: $
    description: >-
      Document the account-wide rate limit Sendlane publishes on its Rate Limits docs
      page, and record that no RateLimit-* headers are returned.
    update:
      x-rate-limits:
        - scope: account
          limit: 240
          window: 1m
          note: >-
            Totalled across all API usage for the account, regardless of how many
            integrations or API keys are active.
          exhaustion_status: 429
          response_headers: []
          source: https://sendlane.stoplight.io/docs/api-documentation/80256ed7dae2a-rate-limits

  - target: $
    description: >-
      Document the standard pagination contract, which is described in prose on the
      Pagination docs page but is not expressed uniformly in the spec.
    update:
      x-pagination:
        style: page-number
        params:
          limit:
            default: 100
            description: Maximum number of results per request.
          page:
            default: 1
            description: Page of results to return.
        envelope:
          data: array of resources
          links: first / last / prev / next
          meta: current_page / from / last_page / path / per_page / to / total
        termination: call until links.next is null
        source: https://sendlane.stoplight.io/docs/api-documentation/ZG9jOjk3NDY3MA-pagination

  - target: $
    description: >-
      Record the error statuses documented on the Responses page that appear in no
      operation's responses block, so a client generator can see them.
    update:
      x-undocumented-in-operations:
        note: >-
          Only 400 and 422 are declared per-operation. These statuses are documented
          in prose only.
        statuses:
          '401': Unauthorized — invalid or expired access token. Observed live as text/html, not JSON.
          '403': Forbidden — refused, including blocking after many errors in a time window.
          '404': Not Found — resource or url-path does not exist.
          '405': Method Not Allowed.
          '429': Too Many Requests — rate limit exceeded.
          '500': Internal Server Error.
        source: https://sendlane.stoplight.io/docs/api-documentation/ZG9jOjQwMjk2NTQ-responses

  - target: $
    description: >-
      State the idempotency finding explicitly. Absence is the finding: the write
      endpoints are not safe to blind-retry.
    update:
      x-idempotency:
        supported: false
        header: null
        note: >-
          No idempotency key, no deduplication guarantee and no retry-safety
          statement is published. POSTs to /tracking/* and /contacts/* may duplicate
          on retry.

  - target: $.components.securitySchemes.BearerToken
    description: Add the token-issuance procedure from the Authentication docs page.
    update:
      x-token-issuance: >-
        Log in to the Sendlane dashboard, navigate to the API section, generate a v2
        access token, and copy it. Account-scoped, no expiry documented, no scopes.
      x-docs: https://sendlane.stoplight.io/docs/api-documentation/ZG9jOjk3NDY2OQ-authentication
      x-required-accept-header: application/json

  - target: $.components.securitySchemes.OtherAccountBearerToken
    description: Explain what the second bearer header is actually for.
    update:
      x-purpose: >-
        Names a SECOND Sendlane account as the destination of a cross-account
        operation. Used by POST /automations/copy to copy an automation from the
        account owning the Authorization token into the account owning this one.

  - target: $.paths['/contacts/{contactId}/sms-consent']
    description: >-
      Record the support gate the provider states in its own operation descriptions —
      this endpoint is disabled until Sendlane enables it per account.
    update:
      x-access-gate: >-
        The Contact SMS Consent endpoint must be enabled on the account by
        contacting Sendlane support before it can be used.

  - target: $.servers
    description: Add the provider-published Prism mock as a non-production server.
    update:
      - url: https://stoplight.io/mocks/sendlane/api-documentation/319114717
        description: >-
          Stoplight Prism mock of this document, published from Sendlane's own
          Stoplight project. Returns static example payloads. Requires any
          Authorization header value. Not a Sendlane-operated sandbox.
        x-role: mock