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.
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
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