Sequenzy SMS API
The SMS API from Sequenzy — 4 operation(s) for sms.
The SMS API from Sequenzy — 4 operation(s) for sms.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/sequenzy:sequenzy-sms-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Sequenzy SMS API
description: Sequenzy API for managing subscribers, tags, events, sequences, and transactional emails
version: 1.0.0
servers:
- url: https://api.sequenzy.com/api/v1
description: Production server
- url: https://api.sequenzy.com/v1
description: Legacy production server alias
security:
- bearerAuth: []
tags:
- name: SMS
paths:
/sms/settings:
get:
operationId: getSmsSettings
summary: Get SMS settings
description: Returns the company's SMS add-on status, including credit balance, phone numbers, and whether SMS sequence steps will actually send.
tags:
- SMS
responses:
'200':
description: SMS settings returned successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
sms:
type: object
properties:
enabled:
type: boolean
example: true
planEligible:
type: boolean
example: true
creditsBalance:
type: number
example: 4200
brandPrefix:
type:
- string
- 'null'
example: Acme
numbers:
type: array
items:
type: object
properties:
id:
type: string
example: num_abc123
e164:
type: string
example: '+18885550123'
label:
type:
- string
- 'null'
description: User-set tag ("Marketing", "Support") shown in number pickers.
example: Marketing
brandPrefix:
type:
- string
- 'null'
description: Per-number brand prefix override; null inherits the account-wide prefix.
example: Acme Support
linkShorteningEnabled:
type: boolean
description: When true (the default), links in messages from this number are replaced with click-tracked short links. When false, they are sent exactly as written and SMS clicks from this number are not tracked.
example: true
status:
type: string
example: active
readyToSend:
type: boolean
example: true
message:
type: string
example: SMS is enabled and ready to send.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Company not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Failed to load SMS settings
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
$ref: '#/components/responses/TransientDatabaseUnavailable'
/sms/numbers/{numberId}:
patch:
operationId: updateSmsNumberLabel
summary: Update an SMS number
description: Updates an SMS number's user-facing label, its brand prefix override, and/or link shortening. Omitted fields keep their value; at least one field is required. Link shortening changes apply to messages prepared after the change. Requires companies:manage.
tags:
- SMS
parameters:
- name: numberId
in: path
required: true
schema:
type: string
description: SMS number ID returned by Get SMS Settings.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
label:
type:
- string
- 'null'
maxLength: 100
description: Label such as Marketing or Support. Send null to clear it.
brandPrefix:
type:
- string
- 'null'
maxLength: 100
description: 'Per-number brand prefix override; messages send as "{prefix}: your message". Send null to clear it back to the account-wide prefix.'
linkShorteningEnabled:
type: boolean
description: true replaces links in messages from this number with click-tracked short links; false sends them exactly as written, so SMS clicks from this number are not tracked.
example: false
responses:
'200':
description: SMS number updated
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
number:
type: object
properties:
id:
type: string
example: num_abc123
label:
type:
- string
- 'null'
example: Marketing
brandPrefix:
type:
- string
- 'null'
example: Acme Support
linkShorteningEnabled:
type: boolean
example: false
message:
type: string
example: SMS number updated.
'400':
description: No update fields provided
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Insufficient permission
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Company or SMS number not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'422':
description: A field has the wrong type, for example a non-boolean linkShorteningEnabled
content:
application/json:
schema:
$ref: '#/components/schemas/RequestValidationError'
delete:
operationId: releaseSmsNumber
summary: Remove SMS number
description: Release a toll-free number and free its workspace slot. Requires companies:manage. Steps explicitly pinned to this number do not switch to another number. This action cannot reclaim the number after release.
tags:
- SMS
parameters:
- name: numberId
in: path
required: true
schema:
type: string
description: SMS number ID from GET /sms/settings.
responses:
'200':
description: SMS number released
content:
application/json:
schema:
type: object
required:
- success
- number
- message
properties:
success:
type: boolean
example: true
number:
type: object
required:
- id
- status
properties:
id:
type: string
status:
type: string
enum:
- released
message:
type: string
example: SMS number released.
'400':
description: The number was already released
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Missing companies:manage or company edit permission
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Company or SMS number not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: A number purchase or conflicting operation is in progress
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Failed to release the number
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'503':
description: Carrier release temporarily failed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/sms/usage:
get:
operationId: getSmsUsage
summary: Get SMS usage
description: Per-number outbound SMS usage for the selected company. Requires account:read. Test sends count only toward testSends, not totalSends, delivered, failed or creditsCharged. lastSentAt may include a test send. Rows are ordered by totalSends descending.
tags:
- SMS
responses:
'200':
description: Per-number usage returned
content:
application/json:
schema:
type: object
required:
- success
- usage
properties:
success:
type: boolean
example: true
usage:
type: array
items:
type: object
required:
- fromNumber
- totalSends
- delivered
- failed
- creditsCharged
- lastSentAt
- testSends
properties:
fromNumber:
type: string
description: Sending phone number.
totalSends:
type: integer
delivered:
type: integer
failed:
type: integer
creditsCharged:
type: number
lastSentAt:
type:
- string
- 'null'
format: date-time
testSends:
type: integer
'401':
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Missing account:read or company access
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Failed to load SMS usage
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/sms/test:
post:
operationId: sendTestSms
summary: Send a test SMS
description: Sends a real test text message. Test sends charge credits, bypass quiet hours, are excluded from step stats, and are limited to 100 per company in a rolling 24-hour window. Requires the SMS add-on with a verified number.
tags:
- SMS
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- to
properties:
to:
type: string
description: Destination phone number in international E.164 format.
example: '+15550100123'
text:
type: string
description: Plain-text message body. Provide text or blocks, not both.
example: Test from Sequenzy
imageUrls:
type: array
description: Up to 2 publicly reachable image URLs sent as MMS media (US/CA only).
items:
type: string
blocks:
type: array
description: SMS content blocks (text + image subset). Provide text or blocks, not both.
items:
type: object
fromNumberId:
type: string
description: Verified sending number ID from GET /sms/settings. Omit to use the oldest verified company number. An invalid explicit selection returns 400 instead of falling back.
maxLength: 128
responses:
'200':
description: Test SMS queued successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
smsSendId:
type: string
example: sms_abc123
toPhone:
type: string
example: '+15550100123'
message:
type: string
example: Test SMS queued to +15550100123. Test sends bypass quiet hours, charge credits, and are excluded from step stats.
'400':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: SMS add-on not enabled, plan not eligible, or number not verified
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Test send limit reached
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Failed to send test SMS
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
headers:
RetryAfter:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
minimum: 1
example: 1
responses:
TransientDatabaseUnavailable:
description: The database was temporarily unavailable. The request may be retried after the delay in Retry-After.
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error: The service could not reach its database for a moment. Retry the request.
code: SERVICE_UNAVAILABLE
schemas:
RequestValidationError:
type: object
description: Returned with status 422 when the request does not match the endpoint's field types, for example a missing required field, a value outside an allowed set, or a number sent as a string. Fix the field named in `property` and retry.
properties:
type:
type: string
example: validation
'on':
type: string
description: Request part that failed, such as `body` or `query`. A query parameter outside its numeric range reports `property` here, with `property` set to `root` and the parameter value in `found`.
example: body
property:
type: string
description: JSON Pointer to the first failing field.
example: /enrollmentMode
message:
type: string
example: Expected union value
summary:
type: string
description: Readable description of the first failure.
example: 'Property ''enrollmentMode'' must be one of: unlimited, one_time, matching_field'
found:
description: The request part as received, after unknown fields were removed.
errors:
type: array
maxItems: 10
description: The first failures found, at most 10.
items:
type: object
properties:
path:
type: string
example: /enrollmentMode
message:
type: string
summary:
type: string
allowedValues:
type: array
description: Accepted values when the field takes a fixed set of values.
items: {}
Error:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
code:
type: string
description: Optional stable machine-readable error discriminator when available.
example: COMPANY_CREATE_REQUIRES_PERSONAL_KEY
retryable:
type: boolean
description: Whether retrying the request can recover from the error.
issues:
type: array
description: Field-level problems with the request, when the endpoint reports them. Up to ten entries; `error` summarizes the first three.
items:
$ref: '#/components/schemas/InputIssue'
required:
- error
InputIssue:
type: object
properties:
path:
type: string
description: Dotted field path, such as `audience.subscriberIds[0]`. Empty when the problem is with the request body itself.
example: kind
message:
type: string
description: What is wrong with the field.
example: must be "add_tags"
allowedValues:
type: array
description: Accepted values when the field only takes a fixed set of values.
items: {}
example:
- add_tags
required:
- path
- message
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key passed as Bearer token