, at most 5, combined with AND. A value matches the tag''s
text form exactly (booleans as true/false, integers in decimal), so metadata[flag]=true matches both boolean true
and the string "true". Keys are case-sensitive; reserved-prefix keys are rejected. Unindexed: bounded by the account,
the date range and the report timeout.'
responses:
'400':
$ref: '#/components/responses/ai-gateway_GatewayError400'
'401':
$ref: '#/components/responses/GatewayError401'
'403':
$ref: '#/components/responses/GatewayError403'
'404':
$ref: '#/components/responses/GatewayError404'
'409':
$ref: '#/components/responses/GatewayError409'
'412':
$ref: '#/components/responses/GatewayError412'
'428':
$ref: '#/components/responses/GatewayError428'
'429':
$ref: '#/components/responses/GatewayError429'
'503':
$ref: '#/components/responses/UsageSummaryUnavailable'
'502':
$ref: '#/components/responses/GatewayError502'
'504':
$ref: '#/components/responses/GatewayError504'
'200':
description: OK
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/GatewayUsage'
example:
data:
totals:
requests: 2
input_tokens: 120
output_tokens: 30
unknown_requests: 1
cache_hits: 0
succeeded_requests: 1
failed_requests: 0
partial_requests: 0
spend: 0.00045
reserved_spend: 0.01
by_day:
- date: '2026-09-01'
requests: 2
input_tokens: 120
output_tokens: 30
unknown_requests: 1
cache_hits: 0
succeeded_requests: 1
failed_requests: 0
partial_requests: 0
spend: 0.00045
reserved_spend: 0.01
by_model:
- model: Qwen/Qwen3-235B-A22B
requests: 2
input_tokens: 120
output_tokens: 30
unknown_requests: 1
cache_hits: 0
succeeded_requests: 1
failed_requests: 0
partial_requests: 0
spend: 0.00045
reserved_spend: 0.01
guardrails:
blocked_events: 0
flagged_events: 0
recent_events: []
meta:
token_group_id: 11111111-1111-4111-8111-111111111111
start_date: '2026-09-01'
end_date: '2026-09-02'
metadata: {}
summary: Get gateway usage summary
tags:
- AI Gateway
/machine-payments/account-credit:
post:
summary: Create a machine payment account credit
description: 'Creates an account credit using the Machine Payment Protocol (MPP), an HTTP-402 payment flow for machines
and agents.
The flow has two steps. First, send an authenticated request with the `amount_usd` to credit; the response is `402
Payment Required` with one or more payment challenges (for example separate Tempo and Stripe challenges) in the `WWW-Authenticate`
header. Second, retry the request with an `Authorization: Payment ...` credential constructed from the challenge;
on success the response includes the credited transaction and a `Payment-Receipt` header.
The credited account is never chosen by the request body: the initial request credits the account of the authenticated
user, and a paid retry credits the account bound to the verified payment credential. The amount must be within the
configured bounds (by default between 5.00 and 500.00 USD).
Successful paid retries are idempotent — when Rails reaches its duplicate-transaction lookup for an already-recorded
payment, it returns the existing transaction with `created: false` instead of crediting the account again. This deduplication
applies to successful fulfillment: re-sending the same Stripe credential may instead be rejected by the upstream provider
as an idempotent replay and return `402 Payment Required` rather than the existing transaction.
> **Warning: the payment credential is bound to a specific Telnyx account ID.** A payment is captured before the bound
account is validated. If the credential names an account that is missing, suspended, blocked, cancelled, dormant,
or ineligible for the tier, the payment is captured but **no account is credited**. If the credential names a different
but eligible account, that account is credited — the service does not compare it against the payer''s account. There
is **no automatic refund**: if the captured payment does not credit the intended account, contact Telnyx support for
remediation.'
operationId: createMachinePaymentAccountCredit
tags:
- Machine Payments
x-endpoint-cost: light
security:
- bearerAuth: []
- Payment: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MachinePaymentAccountCreditRequest'
example:
amount_usd: '10.00'
responses:
'201':
description: Account credit created from a verified machine payment
headers:
Payment-Receipt:
$ref: '#/components/headers/PaymentReceipt'
content:
application/json:
schema:
$ref: '#/components/schemas/MachinePaymentAccountCreditResponse'
example:
data:
id: de06811a-2e43-4561-af5a-7d0a26e20bbb
record_type: machine_payment_account_credit
account_id: '123456789'
amount: '10.00'
currency: USD
payment_source: machine_payment
provider: stripe
payment_method: stripe_spt
payment_intent_id: pi_3OrJx2eZvKYlo2C1234abcd
receipt_reference: pi_3OrJx2eZvKYlo2C1234abcd
mpp_resource: telnyx:account-credit:123456789:usd:10.00
status: settled
created: true
created_at: '2026-08-12T15:00:00Z'
'200':
description: Successful duplicate paid retry — the existing account-credit transaction is returned and the account
is not credited again. This applies when Rails reaches its duplicate-transaction lookup; re-sending the same Stripe
credential may instead be rejected by the upstream provider as an idempotent replay and return `402 Payment Required`.
headers:
Payment-Receipt:
$ref: '#/components/headers/PaymentReceipt'
content:
application/json:
schema:
$ref: '#/components/schemas/MachinePaymentAccountCreditResponse'
example:
data:
id: de06811a-2e43-4561-af5a-7d0a26e20bbb
record_type: machine_payment_account_credit
account_id: '123456789'
amount: '10.00'
currency: USD
payment_source: machine_payment
provider: stripe
payment_method: stripe_spt
payment_intent_id: pi_3OrJx2eZvKYlo2C1234abcd
receipt_reference: pi_3OrJx2eZvKYlo2C1234abcd
mpp_resource: telnyx:account-credit:123456789:usd:10.00
status: settled
created: false
created_at: '2026-08-12T15:00:00Z'
'402':
description: 'Payment required. One or more Machine Payment Protocol challenges (for example separate Tempo and
Stripe challenges) are returned in the `WWW-Authenticate` header. Construct a payment credential from a challenge
and retry the request with an `Authorization: Payment ...` header.'
headers:
WWW-Authenticate:
$ref: '#/components/headers/WWWAuthenticateChallenge'
'401':
description: 'Unauthorized — the request carried neither valid Telnyx API credentials nor an `Authorization: Payment
...` credential'
content:
application/json:
schema:
$ref: '#/components/schemas/machine-payments_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: 'Forbidden — machine payments are not enabled for the account, the account tier is ineligible, the
account is suspended, or the request origin is not permitted. Note: when the account is suspended the failure
is returned via `render_failure` as `{"success": false, "message": "You must verify your identity before you may
perform this action.", "reasons": []}` rather than the standard `errors` envelope.'
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/machine-payments_ErrorResponse'
- $ref: '#/components/schemas/MachinePaymentSuspendedAccountFailure'
examples:
machine-payments-disabled:
summary: Machine payments not enabled, tier ineligible, or origin not permitted
value:
errors:
- detail: Machine payments are not currently enabled
suspended-account:
summary: Suspended account
value:
success: false
message: You must verify your identity before you may perform this action.
reasons: []
'409':
description: Conflict — the payment maps to an already-recorded account credit with different fulfillment metadata,
so the account is not credited again
content:
application/json:
schema:
$ref: '#/components/schemas/machine-payments_ErrorResponse'
example:
errors:
- detail: machine payment account credit conflicts with existing transaction
'422':
description: Unprocessable entity — missing or invalid `amount_usd`, or the request fails account-credit policy
checks
content:
application/json:
schema:
$ref: '#/components/schemas/machine-payments_ErrorResponse'
example:
errors:
- code: '10027'
title: Invalid request
detail: amount_usd must be at least 5.00
'400':
description: 'Bad request — proxied verbatim from the upstream machine payment service when it rejects the request:
a malformed or undeserializable `Authorization: Payment ...` credential, a payment credential whose amount violates
the upstream amount policy, or a request that fails upstream schema validation. The body is the upstream singular
`error` envelope, not the standard Telnyx `errors` array.'
content:
application/json:
schema:
$ref: '#/components/schemas/MachinePaymentUpstreamError'
examples:
invalid-payment-credential:
summary: Malformed or undeserializable Payment credential
value:
error: Invalid Payment authorization credential
amount-policy:
summary: Credential amount outside the upstream amount policy
value:
error: amount_usd must be at least 5.00
'404':
description: Not found — proxied verbatim from the upstream machine payment service when the machine payment provider
is disabled. The body is the upstream singular `error` envelope, not the standard Telnyx `errors` array.
content:
application/json:
schema:
$ref: '#/components/schemas/MachinePaymentUpstreamError'
example:
error: Not found
'502':
description: Bad gateway — the upstream machine payment service failed to process the request. Other upstream failure
statuses (for example 404 when the machine payment provider is disabled, or 400 for schema validation failures)
may be proxied verbatim to the client.
content:
application/json:
schema:
$ref: '#/components/schemas/machine-payments_ErrorResponse'
example:
errors:
- detail: Machine payment service failed
x-latency-category: responsive
/managed_accounts:
get:
summary: Lists accounts managed by the current user.
description: Lists the accounts managed by the current user. Users need to be explictly approved by Telnyx in order
to become manager accounts.
operationId: ListManagedAccounts
tags:
- Managed Accounts
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/managed-accounts_FilterConsolidated'
- $ref: '#/components/parameters/PageConsolidated'
- $ref: '#/components/parameters/managed-accounts_Sort'
- $ref: '#/components/parameters/IncludeCancelledAccounts'
responses:
'200':
description: Successful response with a list of managed accounts.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ManagedAccountMultiListing'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
post:
summary: Create a new managed account.
description: Create a new managed account owned by the authenticated user. You need to be explictly approved by Telnyx
in order to become a manager account.
operationId: CreateManagedAccount
tags:
- Managed Accounts
x-endpoint-cost: medium
parameters: []
requestBody:
description: Parameters that define the managed account to be created
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateManagedAccountRequest'
responses:
'200':
description: Successful response with information about a single managed account.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ManagedAccount'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableManagedAccountEntity'
/managed_accounts/allocatable_global_outbound_channels:
get:
summary: Display information about allocatable global outbound channels for the current user.
description: Display information about allocatable global outbound channels for the current user. Only usable by account
managers.
operationId: ListAllocatableGlobalOutboundChannels
tags:
- Managed Accounts
x-endpoint-cost: medium
responses:
'200':
description: Successful response with information about allocatable global outbound channels.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ManagedAccountsGlobalOutboundChannels'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'403':
$ref: '#/components/responses/managed-accounts_ForbiddenResponse'
/managed_accounts/{id}:
get:
description: Retrieves the details of a single managed account.
summary: Retrieve a managed account
operationId: RetrieveManagedAccount
tags:
- Managed Accounts
parameters:
- name: id
in: path
description: Managed Account User ID
required: true
schema:
type: string
responses:
'200':
description: Successful response with information about a single managed account.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ManagedAccount'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'404':
description: Resource not found
patch:
description: Updates the specified managed account's attributes and returns the updated account.
summary: Update a managed account
operationId: UpdateManagedAccount
tags:
- Managed Accounts
parameters:
- name: id
in: path
description: Managed Account User ID
required: true
schema:
type: string
requestBody:
description: Parameters that define the updates to the managed account
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateManagedAccountRequest'
responses:
'200':
description: Successful response with information about a single managed account.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ManagedAccount'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'404':
description: Resource not found
'422':
$ref: '#/components/responses/UnprocessableManagedAccountEntity'
/managed_accounts/{id}/actions/disable:
post:
summary: Disables a managed account
description: Disables a managed account, forbidding it to use Telnyx services, including sending or receiving phone
calls and SMS messages. Ongoing phone calls will not be affected. The managed account and its sub-users will no longer
be able to log in via the mission control portal.
operationId: DisableManagedAccount
tags:
- Managed Accounts
parameters:
- name: id
in: path
description: Managed Account User ID
required: true
schema:
type: string
responses:
'200':
description: Successful response with information about a single managed account.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ManagedAccount'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'404':
description: Resource not found
'422':
$ref: '#/components/responses/UnprocessableManagedAccountEntity'
/managed_accounts/{id}/actions/enable:
post:
summary: Enables a managed account
description: Enables a managed account and its sub-users to use Telnyx services.
operationId: EnableManagedAccount
tags:
- Managed Accounts
parameters:
- name: id
in: path
description: Managed Account User ID
required: true
schema:
type: string
requestBody:
description: Additional parameters for what to do when enabling the managed account
required: false
content:
application/json:
schema:
type: object
properties:
reenable_all_connections:
type: boolean
description: 'When true, all connections owned by this managed account will automatically be re-enabled.
Note: Any connections that do not pass validations will not be re-enabled.'
default: false
example: true
responses:
'200':
description: Successful response with information about a single managed account.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ManagedAccount'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'404':
description: Resource not found
'422':
$ref: '#/components/responses/UnprocessableManagedAccountEntity'
/managed_accounts/{id}/update_global_channel_limit:
patch:
summary: Update the amount of allocatable global outbound channels allocated to a specific managed account.
description: Update the amount of allocatable global outbound channels allocated to a specific managed account.
operationId: UpdateManagedAccountGlobalChannelLimit
tags:
- Managed Accounts
parameters:
- name: id
in: path
description: Managed Account User ID
required: true
schema:
type: string
requestBody:
description: Parameters that define the changes to the global outbounds channels for the managed account
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateManagedAccountGlobalChannelLimitRequest'
responses:
'200':
description: Successful response with information about the allocatable global outbound channels for the given account.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SingleManagedAccountGlobalOutboundChannels'
'401':
$ref: '#/components/responses/managed-accounts_UnauthorizedResponse'
'404':
description: Resource not found
'422':
$ref: '#/components/responses/UnprocessableManagedAccountEntity'
/media:
get:
summary: List uploaded media
description: Returns a list of the media files stored on your account, with support for filtering.
operationId: ListMediaStorage
tags:
- Media Storage API
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[content_type][]'
schema:
type: object
properties:
content_type:
type: array
items:
type: string
example: application_xml
description: Filters files by given content types
responses:
'200':
description: A response with a list of media resources
content:
application/json:
schema:
type: object
title: List of media resources response
properties:
data:
type: array
items:
$ref: '#/components/schemas/MediaResource'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
post:
summary: Upload media
description: Upload media file to Telnyx so it can be used with other Telnyx services
operationId: CreateMediaStorage
tags:
- Media Storage API
requestBody:
description: Upload media request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadMediaRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadMediaMultipartRequest'
responses:
'201':
description: A response describing a media resource
content:
application/json:
schema:
type: object
title: Media resource response
properties:
data:
$ref: '#/components/schemas/MediaResource'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'422':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
/media/{media_name}:
delete:
summary: Deletes stored media
description: Permanently deletes the specified media file from storage.
operationId: DeleteMediaStorage
tags:
- Media Storage API
parameters:
- $ref: '#/components/parameters/MediaName'
responses:
'204':
description: The media was deleted successfully.
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
get:
summary: Retrieve stored media
description: Returns the information about a stored media file.
operationId: GetMediaStorage
tags:
- Media Storage API
parameters:
- $ref: '#/components/parameters/MediaName'
responses:
'200':
description: A response describing a media resource
content:
application/json:
schema:
type: object
title: Media resource response
properties:
data:
$ref: '#/components/schemas/MediaResource'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
put:
summary: Update stored media
description: Updates the specified stored media file and returns the updated resource.
operationId: UpdateMediaStorage
tags:
- Media Storage API
parameters:
- $ref: '#/components/parameters/MediaName'
requestBody:
description: Update media request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMediaRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/UpdateMediaMultipartRequest'
responses:
'200':
description: A response describing a media resource
content:
application/json:
schema:
type: object
title: Media resource response
properties:
data:
$ref: '#/components/schemas/MediaResource'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'422':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
/media/{media_name}/download:
get:
summary: Download stored media
description: Downloads the raw content of the specified stored media file.
operationId: DownloadMedia
tags:
- Media Storage API
parameters:
- $ref: '#/components/parameters/MediaName'
responses:
'200':
description: A response describing a media resource
content:
application/octet-stream:
schema:
type: string
format: binary
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'422':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
/meeting_sessions:
get:
operationId: listMeetingSessions
tags:
- Meeting Sessions
summary: List meeting sessions
description: Returns a list of meeting sessions, optionally filtered by status.
parameters:
- name: status
in: query
required: false
description: Filter meeting sessions by current status.
schema:
type: string
enum:
- scheduled
- joining
- waiting_for_admission
- active
- leaving
- ended
- failed
- admission_denied
description: 'Lifecycle status of the session. `scheduled`: waiting for `join_at` before the bot attempts to join.
`joining`: the bot is connecting to the meeting. `waiting_for_admission`: the bot is in the lobby waiting to be
admitted. `active`: the bot is in the meeting and capturing. `leaving`: the bot is exiting the meeting. `ended`:
the bot left and the session is complete. `failed`: the bot could not join or the session failed. `admission_denied`:
the host did not admit the bot.'
responses:
'200':
description: Successful response with a list of meeting sessions.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionListResponse'
example:
data:
- id: mtgsess_9b2f...
account_id: '22'
provider: telnyx
status: active
status_detail: null
recording: true
meeting_url: https://meet.google.com/abc-defg-hij
platform: google_meet
bot_name: Notetaker
config:
voice: null
speak_on_enter: null
barge_in: false
summarize_on_end: true
chat_on_enter: null
avatar: null
avatar_state: null
avatar_state_changed_at: null
assistant: null
assistant_state: null
assistant_state_changed_at: null
webhook_url: null
metadata: {}
failure_reason: null
created_at: '2026-06-16T08:58:00Z'
join_at: null
joined_at: '2026-06-16T09:00:00Z'
ended_at: null
updated_at: '2026-06-16T09:00:00Z'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
post:
operationId: createMeetingSession
tags:
- Meeting Sessions
summary: Create a meeting session
description: 'Creates a new meeting session. When an idempotency_key is supplied in the request body, replay lookup
is scoped to the authenticated account and compares only the key; the request payload is not fingerprinted or compared.
If a session with that key already exists for the account, the existing session is replayed (200); otherwise a new
session is created (201). The session may enter asynchronous states (e.g. joining, waiting_for_admission) before becoming
active. Optional `camera_image` input is write-only and applies only when no avatar or Assistant webpage output takes
precedence. An ignored URL is not fetched. An effective URL source is resolved before bot creation; neither the source
URL nor image bytes are persisted, returned, or logged. Treat signed URLs as credentials. With `assistant.avatar:
true`, the assistant is read before the bot is created: an assistant without a Telnyx avatar configured is rejected
with 400 `invalid_request` (message prefix `assistant_avatar_not_configured:`), an unknown assistant with 400 `invalid_request`
(prefix `assistant_not_found:`), and a failed lookup with 503 `assistant_lookup_unavailable`; no bot is created in
any of these cases.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMeetingSessionRequest'
responses:
'200':
description: Replayed existing meeting session matching the account-scoped idempotency_key. Replay is key-only;
the request payload is not fingerprinted or compared.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionResponse'
'201':
description: New meeting session created.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMeetingSessionResponse'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'422':
$ref: '#/components/responses/meeting-sessions_UnprocessableEntity'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingCreateProviderError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/meeting_sessions/{id}:
delete:
operationId: deleteMeetingSession
tags:
- Meeting Sessions
summary: Delete a meeting session
description: Stops a meeting session without deleting its persisted record. Scheduled bots are cancelled, while bots
that are joining or active are asked to leave. The persisted meeting session record remains available.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'200':
description: Successful response with the deleted meeting session.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionResponse'
example:
data:
id: mtgsess_9b2f...
account_id: '22'
provider: telnyx
status: leaving
status_detail: null
recording: true
meeting_url: https://meet.google.com/abc-defg-hij
platform: google_meet
bot_name: Notetaker
config:
voice: null
speak_on_enter: null
barge_in: false
summarize_on_end: true
chat_on_enter: null
avatar: null
avatar_state: null
avatar_state_changed_at: null
assistant: null
assistant_state: null
assistant_state_changed_at: null
webhook_url: null
metadata: {}
failure_reason: null
created_at: '2026-06-16T08:58:00Z'
join_at: null
joined_at: '2026-06-16T09:00:00Z'
ended_at: null
updated_at: '2026-06-16T09:00:00Z'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'409':
$ref: '#/components/responses/meeting-sessions_Conflict'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingStopProviderError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
get:
operationId: retrieveMeetingSession
tags:
- Meeting Sessions
summary: Retrieve a meeting session
description: Retrieves a single meeting session by ID. A session that does not exist or that belongs to a different
account both return 404.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'200':
description: Successful response with the meeting session.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionResponse'
example:
data:
id: mtgsess_9b2f...
account_id: '22'
provider: telnyx
status: active
status_detail: null
recording: true
meeting_url: https://meet.google.com/abc-defg-hij
platform: google_meet
bot_name: Notetaker
config:
voice: null
speak_on_enter: null
barge_in: false
summarize_on_end: true
chat_on_enter: null
avatar: null
avatar_state: null
avatar_state_changed_at: null
assistant: null
assistant_state: null
assistant_state_changed_at: null
webhook_url: null
metadata: {}
failure_reason: null
created_at: '2026-06-16T08:58:00Z'
join_at: null
joined_at: '2026-06-16T09:00:00Z'
ended_at: null
updated_at: '2026-06-16T09:00:00Z'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
patch:
operationId: updateMeetingSession
tags:
- Meeting Sessions
summary: Update a meeting session
description: Updates mutable properties of a meeting session. Only sessions in the scheduled state can be updated; any
other state returns 409 with the invalid_state error code. All request fields are optional, and an empty object is
a valid no-op update.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMeetingSessionRequest'
example:
join_at: '2026-08-05T17:00:00Z'
responses:
'200':
description: Successful response with the updated meeting session.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionResponse'
example:
data:
id: mtgsess_9b2f...
account_id: '22'
provider: telnyx
status: scheduled
status_detail: null
recording: false
meeting_url: https://meet.google.com/abc-defg-hij
platform: google_meet
bot_name: Notetaker
config:
voice: null
speak_on_enter: null
barge_in: false
summarize_on_end: true
chat_on_enter: null
avatar: null
avatar_state: null
avatar_state_changed_at: null
assistant: null
assistant_state: null
assistant_state_changed_at: null
webhook_url: null
metadata: {}
failure_reason: null
created_at: '2026-06-16T08:58:00Z'
join_at: '2026-08-05T17:00:00Z'
joined_at: null
ended_at: null
updated_at: '2026-06-16T09:00:00Z'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'409':
$ref: '#/components/responses/meeting-sessions_Conflict'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingUpdateProviderError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/meeting_sessions/{id}/actions/send_chat:
post:
operationId: sendChatMeetingSession
tags:
- Meeting Session Actions
summary: Send chat in a meeting session
description: Sends a chat message into a meeting session.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SendChatMeetingSessionRequest'
example:
text: I will send the summary after this call.
responses:
'202':
description: The chat message was accepted and is being delivered.
content:
application/json:
schema:
$ref: '#/components/schemas/ActionAcceptedResponse'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'409':
$ref: '#/components/responses/meeting-sessions_Conflict'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'422':
$ref: '#/components/responses/meeting-sessions_UnprocessableEntity'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingSendChatProviderError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/meeting_sessions/{id}/actions/speak:
post:
operationId: speakMeetingSession
tags:
- Meeting Session Actions
summary: Speak in a meeting session
description: 'Sends audio / text-to-speech into a meeting session. With a Telnyx AI Assistant attached, the bot is a
webpage-output bot: the speak audio routes through the assistant''s output page rather than the bot mic and plays
once the assistant is connected -- it is not refused. If that page cannot be reached, delivery fails with the 502
below, which may arrive without an error envelope, so branch on the status code before parsing a body. The assistant
is designed to own the conversation, so prefer letting it speak or use `send_chat`. With a digital avatar (`assistant.avatar:
true`), speak is refused with 409 `invalid_state` (message prefix `avatar_requires_assistant_speech:`): the avatar
renders only the assistant''s own speech.'
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SpeakMeetingSessionRequest'
example:
text: Here are the three decisions from this call.
interrupt: false
responses:
'202':
description: The speak action was accepted and is being processed.
content:
application/json:
schema:
$ref: '#/components/schemas/ActionAcceptedResponse'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'409':
$ref: '#/components/responses/meeting-sessions_Conflict'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'422':
$ref: '#/components/responses/meeting-sessions_UnprocessableEntity'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingSpeakUpstreamError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/meeting_sessions/{id}/actions/stop_speaking:
post:
operationId: stopSpeakingMeetingSession
tags:
- Meeting Session Actions
summary: Stop speaking in a meeting session
description: 'Stops any active text-to-speech playback in a meeting session. Sessions with a digital avatar (`assistant.avatar:
true`) return 409 `invalid_state` (message prefix `avatar_requires_assistant_speech:`): the avatar renders only the
assistant''s own speech.'
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'202':
description: The stop-speaking action was accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/ActionAcceptedResponse'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'409':
$ref: '#/components/responses/meeting-sessions_Conflict'
'422':
$ref: '#/components/responses/meeting-sessions_UnprocessableEntity'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingStopSpeakingProviderError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
/meeting_sessions/{id}/artifacts:
get:
operationId: listMeetingSessionArtifacts
tags:
- Meeting Session Artifacts
summary: List meeting session artifacts
description: Returns a list of artifacts for a meeting session.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'200':
description: Successful response with a list of meeting session artifacts.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionArtifactListResponse'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
post:
operationId: createMeetingSessionArtifact
tags:
- Meeting Session Artifacts
summary: Create a meeting session artifact
description: 'Requests asynchronous generation of one artifact: `summary`, `action_items`, `decisions`, `topics`, `open_questions`,
or `custom`. Each request produces one artifact. `custom` is answered from a `prompt` you supply, which is required
for `custom` and rejected on the five named types. Generation requires transcript content and configured inference
and currently reads at most the first 10,000 segments, so exceptionally long transcripts may produce incomplete artifacts
or fail model limits. **Not idempotent, and every call is billed**: each request is a separate inference run, so a
retry or a duplicate POST produces a second artifact and a second charge. Guard the call rather than relying on the
service to collapse it. The automatic `summarize_on_end` attempt is billed on the same basis.'
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMeetingSessionArtifactRequest'
example:
type: summary
responses:
'202':
description: Artifact creation accepted and is being processed asynchronously.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionArtifactResponse'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'409':
$ref: '#/components/responses/meeting-sessions_Conflict'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingArtifactUnavailable'
/meeting_sessions/{id}/artifacts/{artifact_id}:
get:
operationId: retrieveMeetingSessionArtifact
tags:
- Meeting Session Artifacts
summary: Retrieve a meeting session artifact
description: Retrieves a single meeting session artifact by ID.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
- $ref: '#/components/parameters/ArtifactId'
responses:
'200':
description: Successful response with the meeting session artifact.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionArtifactResponse'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
/meeting_sessions/{id}/events:
get:
operationId: listMeetingSessionEvents
tags:
- Meeting Session Data
summary: List meeting session events
description: Returns stored events ordered by ascending `seq`. To continue, pass the last returned item's `seq` as `after`.
An empty page means no later stored events existed at read time; this operation returns no separate next-page cursor.
Default `limit` is 100 and maximum is 1,000.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Successful response with a list of meeting session events.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionEventListResponse'
example:
data:
- seq: 12
type: session.status_changed
payload:
status: active
previous_status: waiting_for_admission
occurred_at: '2026-06-16T09:00:05Z'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
/meeting_sessions/{id}/recording_media:
delete:
operationId: deleteMeetingSessionRecordingMedia
tags:
- Meeting Session Data
summary: Delete meeting session recording media
description: Irreversibly requests deletion of the aggregate recording media for the session. The operation retains
the Telnyx-local Meeting session, transcript segments, events, artifacts, and usage records. It is separate from `DELETE
/meeting_sessions/{id}`, which stops or cancels participation without deleting the persisted session. A missing/foreign
session returns 404; a deletion request whose outcome is unknown returns 502.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'202':
description: The irreversible recording-media deletion request was accepted, or a deletion is already in progress.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionRecordingMediaDeletionResponse'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/RecordingMediaResourceNotFound'
'409':
$ref: '#/components/responses/RecordingMediaInvalidState'
'422':
$ref: '#/components/responses/RecordingMediaUnsupportedCapability'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/RecordingMediaProviderError'
'503':
$ref: '#/components/responses/RecordingMediaAuthenticationUnavailable'
/meeting_sessions/{id}/transcript:
get:
operationId: listMeetingSessionTranscript
tags:
- Meeting Session Data
summary: List meeting session transcript
description: 'Returns transcript segments ordered by ascending `seq`. Default `limit` is 100 and maximum is 1,000. Continue
with `after=meta.next_after`. A long-poll timeout returns 200 with empty `data` and `meta.next_after: null`; retain
the cursor supplied to that request because null is not a replacement cursor.'
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/WaitSeconds'
responses:
'200':
description: Successful response with transcript segments (may be empty on wait timeout).
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptSegmentListResponse'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
/messages:
post:
summary: Send a message
description: 'Send a message with a Phone Number, Alphanumeric Sender ID, Short Code or Number Pool.
This endpoint allows you to send a message with any messaging resource.
Current messaging resources include: long-code, short-code, number-pool, and
alphanumeric-sender-id.
'
operationId: SendMessage
tags:
- Messages
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMessageRequest'
responses:
'200':
description: Successful response with details about a message.
content:
application/json:
schema:
type: object
title: Message Response
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/alphanumeric/sender/id:
post:
summary: Send a message using an alphanumeric sender ID
description: Send an SMS message using an alphanumeric sender ID. This is SMS only.
operationId: SendAlphanumericSenderIdMessage
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- from
- to
- text
- messaging_profile_id
properties:
from:
type: string
description: A valid alphanumeric sender ID on the user's account.
example: MyCompany
to:
description: Receiving address (+E.164 formatted phone number).
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: The message body.
messaging_profile_id:
type: string
format: uuid
description: The messaging profile ID to use.
webhook_url:
type:
- string
- 'null'
format: url
description: Callback URL for delivery status updates.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: Failover callback URL for delivery status updates.
use_profile_webhooks:
type: boolean
description: If true, use the messaging profile's webhook settings.
responses:
'200':
description: Successful response with the sent message.
content:
application/json:
schema:
$ref: '#/components/schemas/OutboundMessageResponse'
'400':
$ref: '#/components/responses/messaging_BadRequestResponse'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse'
'422':
$ref: '#/components/responses/messaging_UnprocessableEntityResponse'
x-latency-category: responsive
/messages/alphanumeric_sender_id:
post:
summary: Send a message using an alphanumeric sender ID
description: Send an SMS message using an alphanumeric sender ID. This is SMS only.
operationId: SendAlphanumericSenderIdMessage
tags:
- Messages
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- from
- to
- text
- messaging_profile_id
properties:
from:
type: string
description: A valid alphanumeric sender ID on the user's account.
example: MyCompany
to:
description: Receiving address (+E.164 formatted phone number).
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: The message body.
messaging_profile_id:
type: string
format: uuid
description: The messaging profile ID to use.
webhook_url:
type:
- string
- 'null'
format: url
description: Callback URL for delivery status updates.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: Failover callback URL for delivery status updates.
use_profile_webhooks:
type: boolean
description: If true, use the messaging profile's webhook settings.
responses:
'200':
description: Successful response with the sent message.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_OutboundMessageResponse'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
'400':
$ref: '#/components/responses/messaging_BadRequestResponse_0b38e7044b'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'422':
$ref: '#/components/responses/messaging_UnprocessableEntityResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/group/{message_id}:
get:
summary: Retrieve group MMS messages
description: Retrieve all messages in a group MMS conversation by the group message ID.
operationId: GetGroupMmsMessages
tags:
- Messages
parameters:
- name: message_id
in: path
required: true
schema:
type: string
format: uuid
description: The group message ID.
responses:
'200':
description: Successful response with group MMS messages.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'404':
$ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b'
/messages/group_mms:
post:
summary: Send a group MMS message
operationId: CreateGroupMmsMessage
tags:
- Messages
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGroupMMSMessageRequest'
responses:
'200':
description: Successful response with details about a message.
content:
application/json:
schema:
type: object
title: Message Response
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
description: Queues an MMS addressed to multiple recipients as a group conversation. Delivery events are reported asynchronously
through messaging webhooks.
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/long_code:
post:
summary: Send a long code message
operationId: CreateLongCodeMessage
tags:
- Messages
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateLongCodeMessageRequest'
responses:
'200':
description: Successful response with details about a message.
content:
application/json:
schema:
type: object
title: Message Response
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
description: Queues an outbound SMS or MMS using a long-code sender. Delivery progress and final disposition are reported
asynchronously through messaging webhooks.
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/number_pool:
post:
summary: Send a message using number pool
operationId: CreateNumberPoolMessage
tags:
- Messages
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateNumberPoolMessageRequest'
responses:
'200':
description: Successful response with details about a message.
content:
application/json:
schema:
type: object
title: Message Response
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
description: Queues an outbound message using a number pool. Telnyx selects an eligible sender from the pool according
to its messaging profile configuration.
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/rcs:
post:
tags:
- RCS
summary: Send an RCS message
operationId: SendRCSMessage
requestBody:
description: RCS message body
content:
application/json:
schema:
$ref: '#/components/schemas/RCSMessage'
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/RCSResponse'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
description: Queues an outbound RCS message through the selected RCS agent. Check recipient capabilities before sending
features that require RCS support.
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/rcs/deeplinks/{agent_id}:
get:
summary: Generate RCS deeplink
description: Generate a deeplink URL that can be used to start an RCS conversation with a specific agent.
operationId: GenerateRCSDeeplink
tags:
- RCS
parameters:
- name: agent_id
in: path
description: RCS agent ID
required: true
schema:
type: string
- name: phone_number
in: query
description: Phone number in E164 format (URL encoded)
required: false
schema:
type: string
example: '%2B18445550001'
- name: body
in: query
description: Pre-filled message body (URL encoded)
required: false
schema:
type: string
example: hello%20world
responses:
'200':
description: Successful response with deeplink URL
content:
application/json:
schema:
$ref: '#/components/schemas/RCSDeeplinkResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/messages/rcs_deeplinks/{agent_id}:
get:
summary: Generate RCS deeplink
description: Generate a deeplink URL that can be used to start an RCS conversation with a specific agent.
operationId: GenerateRCSDeeplink
tags:
- RCS
parameters:
- name: agent_id
in: path
description: RCS agent ID
required: true
schema:
type: string
- name: phone_number
in: query
description: Phone number in E164 format (URL encoded)
required: false
schema:
type: string
example: '%2B18445550001'
- name: body
in: query
description: Pre-filled message body (URL encoded)
required: false
schema:
type: string
example: hello%20world
responses:
'200':
description: Successful response with deeplink URL
content:
application/json:
schema:
$ref: '#/components/schemas/RCSDeeplinkResponse'
4XX:
$ref: '#/components/responses/rcs_messaging_GenericErrorResponse'
x-latency-category: responsive
/messages/schedule:
post:
summary: Schedule a message
description: 'Schedule a message with a Phone Number, Alphanumeric Sender ID, Short Code or Number Pool.
This endpoint allows you to schedule a message with any messaging resource.
Current messaging resources include: long-code, short-code, number-pool, and
alphanumeric-sender-id.
'
operationId: ScheduleMessage
tags:
- Messages
requestBody:
description: Message payload with send_at set
content:
application/json:
schema:
$ref: '#/components/schemas/CreateScheduledMessageRequest'
responses:
'200':
description: Successful response with details about a message.
content:
application/json:
schema:
type: object
title: Message Response
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/messages/short_code:
post:
summary: Send a short code message
operationId: CreateShortCodeMessage
tags:
- Messages
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateShortCodeMessageRequest'
responses:
'200':
description: Successful response with details about a message.
content:
application/json:
schema:
type: object
title: Message Response
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
description: Queues an outbound SMS or MMS using a short-code sender. Delivery progress and final disposition are reported
asynchronously through messaging webhooks.
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/whatsapp:
post:
tags:
- Whatsapp messaging
summary: Send a Whatsapp message
description: Sends a WhatsApp message using a Telnyx WhatsApp-enabled number. The message body, interactive elements,
media, location, and reaction content are specified in the `whatsapp_message` field. Delivery progress and final disposition
are reported asynchronously through messaging webhooks.
operationId: SendWhatsappMessage
requestBody:
description: Whatsapp message body
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_WhatsappMessage'
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappResponse'
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
'409':
$ref: '#/components/responses/messaging_IdempotencyConflictResponse'
'413':
$ref: '#/components/responses/IdempotencyPayloadTooLargeResponse'
'503':
$ref: '#/components/responses/IdempotencyProtectionUnavailableResponse'
parameters:
- $ref: '#/components/parameters/IdempotencyKey'
/messages/{id}:
delete:
summary: Cancel a scheduled message
description: Cancel a scheduled message that has not yet been sent. Only messages with `status=scheduled` and `send_at`
more than a minute from now can be cancelled.
operationId: CancelMessage
tags:
- Messages
parameters:
- name: id
in: path
description: The id of the message to cancel
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_OutboundMessagePayloadCancelled'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
'404':
description: Not found.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
get:
summary: Retrieve a message
description: 'Note: This API endpoint can only retrieve messages that are no older than 10 days since their creation.
If you require messages older than this, please generate an [MDR report.](https://developers.telnyx.com/api-reference/mdr-usage-reports/create-mdr-usage-report)'
operationId: GetMessage
tags:
- Messages
parameters:
- name: id
in: path
description: The id of the message
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response with details of a message.
content:
application/json:
schema:
type: object
properties:
data:
oneOf:
- $ref: '#/components/schemas/MessagingOutboundMessagePayload'
- $ref: '#/components/schemas/MessagingInboundMessagePayload'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/messaging/hosted/numbers:
get:
summary: List messaging hosted numbers
description: List all hosted numbers associated with the authenticated user.
operationId: ListMessagingHostedNumbers
tags:
- Messaging
parameters:
- name: filter[messaging_profile_id]
in: query
required: false
schema:
type: string
format: uuid
description: Filter by messaging profile ID.
- name: filter[phone_number]
in: query
required: false
schema:
type: string
description: Filter by exact phone number.
- name: filter[phone_number][contains]
in: query
required: false
schema:
type: string
description: Filter by phone number substring.
- name: sort[phone_number]
in: query
required: false
schema:
type: string
enum:
- asc
- desc
description: Sort by phone number.
- name: page[number]
in: query
description: Page number to retrieve (1-based).
required: false
schema:
type: integer
default: 1
- name: page[size]
in: query
description: Number of items to return per page.
required: false
schema:
type: integer
default: 20
responses:
'200':
description: Successful response with a list of hosted numbers.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse'
x-latency-category: responsive
/messaging/profiles/{id}/actions/regenerate/secret:
post:
summary: Regenerate messaging profile secret
description: Regenerate the v1 secret for a messaging profile.
operationId: RegenerateMessagingProfileSecret
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The identifier of the messaging profile.
responses:
'200':
description: Successful response with details about a messaging profile.
content:
application/json:
schema:
type: object
title: Messaging Profile Response
properties:
data:
$ref: '#/components/schemas/MessagingProfile'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse'
'404':
$ref: '#/components/responses/profiles_messaging_NotFoundResponse'
x-latency-category: responsive
/messaging/profiles/{id}/alphanumeric/sender/ids:
get:
summary: List alphanumeric sender IDs for a messaging profile
description: List all alphanumeric sender IDs associated with a specific messaging profile.
operationId: ListProfileAlphanumericSenderIds
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The identifier of the messaging profile.
- name: page[number]
in: query
description: Page number to retrieve (1-based).
required: false
schema:
type: integer
default: 1
- name: page[size]
in: query
description: Number of items to return per page.
required: false
schema:
type: integer
default: 20
responses:
'200':
description: Successful response with a list of alphanumeric sender IDs.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AlphanumericSenderId'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse'
'404':
$ref: '#/components/responses/profiles_messaging_NotFoundResponse'
x-latency-category: responsive
/messaging/profiles/{id}/metrics:
get:
summary: Get detailed messaging profile metrics
description: Get detailed metrics for a specific messaging profile, broken down by time interval.
operationId: GetDetailedProfileMetrics
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The identifier of the messaging profile.
- name: time_frame
in: query
required: false
schema:
$ref: '#/components/schemas/MessagingMetricsTimeFrame'
description: The time frame for metrics.
responses:
'200':
description: Successful response with detailed profile metrics.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ProfileMetrics'
example: {}
'400':
$ref: '#/components/responses/messaging_BadRequestResponse'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse'
'404':
$ref: '#/components/responses/profiles_messaging_NotFoundResponse'
x-latency-category: responsive
/messaging/rcs/agents:
get:
summary: List all RCS agents
operationId: ListRCSAgents
tags:
- RCS
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful reponse with the list of RCS agents
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_RCSAgentsResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns RCS agents available to the authenticated account.
/messaging/rcs/agents/{id}:
get:
summary: Retrieve an RCS agent
operationId: GetRCSAgentById
tags:
- RCS
parameters:
- name: id
in: path
description: RCS agent ID
required: true
schema:
type: string
responses:
'200':
description: Successful response with the RCS agent
content:
application/json:
schema:
$ref: '#/components/schemas/RCSAgentResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the configuration and current state of the specified RCS agent.
patch:
summary: Modify an RCS agent
operationId: UpdateRCSAgentById
tags:
- RCS
parameters:
- name: id
in: path
description: RCS agent ID
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RCSAgentUpdate'
responses:
'200':
description: Successful response with the updated RCS agent
content:
application/json:
schema:
$ref: '#/components/schemas/RCSAgentResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the supplied configuration fields on the specified RCS agent.
/messaging/rcs/bulk_capabilities:
post:
summary: Check RCS capabilities (batch)
operationId: ListRCSCapabilitiesOfAPhoneNumbersBatch
tags:
- RCS
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RCSCapabilityListRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/RCSCapabilitiesBulk'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns RCS capability information for multiple recipients in one request.
/messaging/rcs/capabilities/{agent_id}/{phone_number}:
get:
summary: Check RCS capabilities
operationId: ListRCSCapabilitiesOfAPhoneNumber
tags:
- RCS
parameters:
- name: agent_id
in: path
description: RCS agent ID
required: true
schema:
type: string
- name: phone_number
in: path
description: Phone number in E164 format
required: true
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/RCSCapabilitiesSingle'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the RCS features supported by the specified recipient for the selected agent.
/messaging/rcs/test_number_invite/{id}/{phone_number}:
put:
summary: Add RCS test number
description: Adds a test phone number to an RCS agent for testing purposes.
operationId: InviteATestNumberToRCS
tags:
- RCS
parameters:
- name: id
in: path
description: RCS agent ID
required: true
schema:
type: string
- name: phone_number
in: path
description: Phone number in E164 format to invite for testing
required: true
schema:
type: string
responses:
'200':
description: Test number successfully invited to RCS agent
content:
application/json:
schema:
$ref: '#/components/schemas/RCSTestNumberInviteResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/messaging/tollfree/verification/requests/{id}/status/history:
get:
tags:
- Verification Requests
summary: Get Verification Request Status History
description: 'Get the history of status changes for a verification request.
Returns a paginated list of historical status changes including the reason for each change and when it occurred.'
operationId: GetVerificationStatusHistory
parameters:
- required: true
schema:
title: Id
type: string
format: uuid
name: id
in: path
description: Unique identifier of the resource.
- required: true
schema:
title: Page Number
minimum: 1
type: integer
name: page[number]
in: query
description: Page number to retrieve (1-based).
- required: true
schema:
title: Page Size
minimum: 1
type: integer
description: Request this many records per page. This value is automatically clamped if the provided value is too
large.
name: page[size]
in: query
description: Number of items to return per page.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paginated_VerificationStatusHistoryEntry_'
4XX:
$ref: '#/components/responses/toll-free-verification_GenericErrorResponse'
x-latency-category: responsive
/messaging_hosted_number_orders:
get:
summary: List messaging hosted number orders
operationId: ListMessagingHostedNumberOrders
tags:
- Hosted Numbers
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response with a list of messaging hosted number orders.
content:
application/json:
schema:
type: object
title: List Messaging Hosted Number Order Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/MessagingHostedNumberOrder'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns hosted-messaging orders for the authenticated account. Apply the documented filters and pagination
parameters to narrow the result set.
post:
summary: Create a messaging hosted number order
operationId: CreateMessagingHostedNumberOrder
tags:
- Hosted Numbers
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMessagingHostedNumberOrderRequest'
responses:
'200':
description: Successful response with details about a messaging hosted number order.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Hosted Number Order Response
properties:
data:
$ref: '#/components/schemas/MessagingHostedNumberOrder'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Creates an order to enable Telnyx messaging on phone numbers whose voice service remains with another carrier.
/messaging_hosted_number_orders/eligibility_numbers_check:
post:
summary: Check hosted messaging eligibility
operationId: CheckEligibilityNumbers
tags:
- Hosted Numbers
requestBody:
description: Phone numbers to check eligibility
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityNumbersRequest'
example:
phone_numbers:
- string
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityNumbersResponse'
example:
phone_numbers:
- detail: string
phone_number: string
eligible: false
eligible_status: NUMBER_CAN_NOT_BE_REPEATED
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
description: Checks whether the supplied phone numbers are eligible for hosted messaging before an order is created.
/messaging_hosted_number_orders/{id}:
delete:
summary: Delete a messaging hosted number order
description: Delete a messaging hosted number order and all associated phone numbers.
operationId: DeleteMessagingHostedNumberOrder
tags:
- Hosted Numbers
parameters:
- name: id
in: path
description: Identifies the messaging hosted number order to delete.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a messaging hosted number order.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Hosted Number Order Response
properties:
data:
$ref: '#/components/schemas/MessagingHostedNumberOrder'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
get:
summary: Retrieve a messaging hosted number order
operationId: GetMessagingHostedNumberOrder
tags:
- Hosted Numbers
parameters:
- name: id
in: path
description: Identifies the type of resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a messaging hosted number order.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Hosted Number Order Response
properties:
data:
$ref: '#/components/schemas/MessagingHostedNumberOrder'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the current state, phone numbers, and required actions for the specified hosted-messaging order.
/messaging_hosted_number_orders/{id}/actions/file_upload:
post:
summary: Upload hosted number document
operationId: UploadMessagingHostedNumberOrderFile
tags:
- Hosted Numbers
parameters:
- name: id
in: path
description: Identifies the type of resource.
required: true
schema:
type: string
requestBody:
description: Message payload
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadFileMessagingHostedNumberOrderRequest'
encoding:
loa:
contentType: application/pdf
bill:
contentType: application/pdf
responses:
'200':
description: Successful response with details about a messaging hosted number order.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Hosted Number Order Response
properties:
data:
$ref: '#/components/schemas/MessagingHostedNumberOrder'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Uploads a supporting document to the specified hosted-messaging order.
/messaging_hosted_number_orders/{id}/validation_codes:
post:
summary: Validate hosted number codes
description: Validate the verification codes sent to the numbers of the hosted order. The verification codes must be
created in the verification codes endpoint.
operationId: ValidateVerificationCodesForMessagingHostedNumberOrder
tags:
- Hosted Numbers
parameters:
- name: id
in: path
description: Order ID related to the validation codes.
required: true
schema:
type: string
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationCodesRequest'
example:
verification_codes:
- phone_number: string
code: string
responses:
'200':
description: Successful response with the phone numbers and their respective status of the validation codes.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Hosted Number Response
properties:
data:
$ref: '#/components/schemas/ValidationCodes'
example:
data:
phone_numbers:
- phone_number: string
status: verified
order_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/messaging_hosted_number_orders/{id}/verification_codes:
post:
summary: Create hosted number verification codes
description: Create verification codes to validate numbers of the hosted order. The verification codes will be sent
to the numbers of the hosted order.
operationId: CreateVerificationCodesForMessagingHostedNumberOrder
tags:
- Hosted Numbers
parameters:
- name: id
in: path
description: Order ID to have a verification code created.
required: true
schema:
type: string
requestBody:
description: Message payload
content:
application/json:
schema:
$ref: '#/components/schemas/VerificationCodesRequest'
example:
phone_numbers:
- string
verification_method: sms
responses:
'200':
description: Verification codes created and sent to the phone numbers of the hosted order.
content:
application/json:
schema:
$ref: '#/components/schemas/CreatedVerificationCodesResponse'
example:
data:
- phone_number: string
verification_code_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
type: sms
error: string
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/messaging_hosted_numbers:
get:
summary: List messaging hosted numbers
description: List all hosted numbers associated with the authenticated user.
operationId: ListMessagingHostedNumbers
tags:
- Messaging
parameters:
- name: filter[messaging_profile_id]
in: query
required: false
schema:
type: string
format: uuid
description: Filter by messaging profile ID.
- name: filter[phone_number]
in: query
required: false
schema:
type: string
description: Filter by exact phone number.
- name: filter[phone_number][contains]
in: query
required: false
schema:
type: string
description: Filter by phone number substring.
- name: sort[phone_number]
in: query
required: false
schema:
type: string
enum:
- asc
- desc
description: Sort by phone number.
- name: page[number]
in: query
description: Page number to retrieve (1-based).
required: false
schema:
type: integer
default: 1
- name: page[size]
in: query
description: Number of items to return per page.
required: false
schema:
type: integer
default: 20
responses:
'200':
description: Successful response with a list of hosted numbers.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
/messaging_hosted_numbers/{id}:
delete:
summary: Delete a messaging hosted number
operationId: DeleteMessagingHostedNumber
tags:
- Hosted Numbers
parameters:
- name: id
in: path
description: Identifies the type of resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a messaging hosted number order.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Hosted Number Order Response
properties:
data:
$ref: '#/components/schemas/MessagingHostedNumberOrder'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Removes the specified hosted number from Telnyx messaging management.
get:
summary: Retrieve a messaging hosted number
description: Retrieve a specific messaging hosted number by its ID or phone number.
operationId: GetMessagingHostedNumber
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
description: The ID or phone number of the hosted number.
responses:
'200':
description: Successful response with a hosted number.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'404':
$ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b'
patch:
summary: Update a messaging hosted number
description: Update the messaging settings for a hosted number.
operationId: UpdateMessagingHostedNumber
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
description: The ID or phone number of the hosted number.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePhoneNumberMessagingSettingsRequest'
responses:
'200':
description: Successful response with the updated hosted number.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'404':
$ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b'
/messaging_numbers/bulk_updates:
post:
summary: Bulk update phone number profiles
operationId: BulkUpdateMessagingSettingsOnPhoneNumbers
tags:
- Number Settings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbersRequest'
responses:
'200':
description: Successful response with details about messaging bulk update phone numbers.
content:
application/json:
schema:
type: object
title: Retrieve bulk update messaging settings Response
properties:
data:
$ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers'
4XX:
$ref: '#/components/responses/phone-numbers_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Update the messaging settings of multiple phone numbers in a single request.
/messaging_numbers/bulk_updates/{order_id}:
get:
summary: Retrieve bulk update status
operationId: GetBulkUpdateMessagingSettingsOnPhoneNumbersStatus
tags:
- Number Settings
parameters:
- name: order_id
description: Order ID to verify bulk update status.
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about messaging bulk update phone numbers.
content:
application/json:
schema:
type: object
title: Retrieve bulk update messaging settings Response
properties:
data:
$ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers'
4XX:
$ref: '#/components/responses/phone-numbers_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the status of a previously submitted bulk update of messaging settings.
/messaging_numbers_bulk_updates:
post:
summary: Bulk update phone number profiles
operationId: BulkUpdateMessagingSettingsOnPhoneNumbers
tags:
- Number Settings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbersRequest'
responses:
'200':
description: Successful response with details about messaging bulk update phone numbers.
content:
application/json:
schema:
type: object
title: Retrieve bulk update messaging settings Response
properties:
data:
$ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Starts a bulk update of messaging-profile assignments for the supplied phone numbers. The response identifies
the order used to monitor processing.
/messaging_numbers_bulk_updates/{order_id}:
get:
summary: Retrieve bulk update status
operationId: GetBulkUpdateMessagingSettingsOnPhoneNumbersStatus
tags:
- Number Settings
parameters:
- name: order_id
description: Order ID to verify bulk update status.
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about messaging bulk update phone numbers.
content:
application/json:
schema:
type: object
title: Retrieve bulk update messaging settings Response
properties:
data:
$ref: '#/components/schemas/BulkMessagingSettingsUpdatePhoneNumbers'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns processing status and results for a bulk messaging-settings update order.
/messaging_optouts:
get:
summary: List opt-outs
description: Returns a paginated list of opt-out blocks created when message recipients opt out. Supports filtering
and optional redaction of recipient numbers.
operationId: ListOptOuts
tags:
- Opt-Out Management
parameters:
- name: redaction_enabled
in: query
description: If receiving address (+E.164 formatted phone number) should be redacted
required: false
example: +447766****
schema:
type: string
x-format: boolean
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id], filter[from]'
schema:
type: object
properties:
messaging_profile_id:
type: string
description: The ID of the messaging profile to retrieve opt-outs for
from:
type: string
description: The sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code) to retrieve
opt-outs for
- $ref: '#/components/parameters/PageConsolidated'
- name: created_at
in: query
style: deepObject
explode: true
description: 'Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte]'
schema:
type: object
properties:
gte:
type: string
format: date-time
description: Filter opt-outs created after this date (ISO-8601 format)
lte:
type: string
format: date-time
description: Filter opt-outs created before this date (ISO-8601 format)
responses:
'200':
description: Successful response with opt-out list data
content:
application/json:
schema:
$ref: '#/components/schemas/OptOutListResponse'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
/messaging_profile_metrics:
get:
summary: List high-level messaging profile metrics
description: List high-level metrics for all messaging profiles belonging to the authenticated user.
operationId: GetProfileMetrics
tags:
- Messaging
parameters:
- name: time_frame
in: query
required: false
schema:
$ref: '#/components/schemas/MessagingMetricsTimeFrame'
description: The time frame for metrics.
responses:
'200':
description: Successful response with high-level profile metrics.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ProfileMetricsHighLevel'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
'400':
$ref: '#/components/responses/messaging_BadRequestResponse_0b38e7044b'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
/messaging_profiles:
get:
summary: List messaging profiles
operationId: ListMessagingProfiles
tags:
- Profiles
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]'
schema:
type: object
properties:
name:
type: string
description: Filter by name
- $ref: '#/components/parameters/PageConsolidated'
- name: filter[name][eq]
in: query
required: false
schema:
type: string
description: Filter profiles by exact name match.
- name: filter[name][contains]
in: query
required: false
schema:
type: string
description: Filter profiles by name containing the given string.
responses:
'200':
description: Successful response with a list of messaging profiles.
content:
application/json:
schema:
type: object
title: List Messaging Profiles Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/messaging_MessagingProfile'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Lists messaging profiles owned by the authenticated account. Apply the documented filters and pagination
parameters to narrow the result set.
post:
summary: Create a messaging profile
operationId: CreateMessagingProfile
tags:
- Profiles
x-endpoint-cost: medium
requestBody:
description: New Messaging Profile object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_CreateMessagingProfileRequest'
responses:
'200':
description: Successful response with details about a messaging profile.
content:
application/json:
schema:
type: object
title: Messaging Profile Response
properties:
data:
$ref: '#/components/schemas/messaging_MessagingProfile'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Creates a messaging profile that controls outbound sender selection, webhook delivery, and inbound message
handling for associated numbers and short codes.
/messaging_profiles/{id}:
delete:
summary: Delete a messaging profile
operationId: DeleteMessagingProfile
tags:
- Profiles
parameters:
- $ref: '#/components/parameters/MessagingProfileId'
responses:
'200':
description: Successful response with details about a messaging profile.
content:
application/json:
schema:
type: object
title: Messaging Profile Response
properties:
data:
$ref: '#/components/schemas/messaging_MessagingProfile'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Deletes the specified messaging profile and returns the profile's final configuration.
get:
summary: Retrieve a messaging profile
operationId: RetrieveMessagingProfile
tags:
- Profiles
parameters:
- $ref: '#/components/parameters/MessagingProfileId'
responses:
'200':
description: Successful response with details about a messaging profile.
content:
application/json:
schema:
type: object
title: Messaging Profile Response
properties:
data:
$ref: '#/components/schemas/messaging_MessagingProfile'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the complete configuration of the specified messaging profile, including webhook and sender-selection
settings.
patch:
summary: Update a messaging profile
operationId: UpdateMessagingProfile
tags:
- Profiles
parameters:
- $ref: '#/components/parameters/MessagingProfileId'
requestBody:
description: New Messaging Profile object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_UpdateMessagingProfileRequest'
responses:
'200':
description: Successful response with details about a messaging profile.
content:
application/json:
schema:
type: object
title: Messaging Profile Response
properties:
data:
$ref: '#/components/schemas/messaging_MessagingProfile'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the supplied settings on the specified messaging profile. Settings omitted from the request remain
unchanged.
/messaging_profiles/{id}/actions/regenerate_secret:
post:
summary: Regenerate messaging profile secret
description: Regenerate the v1 secret for a messaging profile.
operationId: RegenerateMessagingProfileSecret
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The identifier of the messaging profile.
responses:
'200':
description: Successful response with details about a messaging profile.
content:
application/json:
schema:
type: object
title: Messaging Profile Response
properties:
data:
$ref: '#/components/schemas/messaging_MessagingProfile'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'404':
$ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b'
/messaging_profiles/{id}/alphanumeric_sender_ids:
get:
summary: List alphanumeric sender IDs for a messaging profile
description: List all alphanumeric sender IDs associated with a specific messaging profile.
operationId: ListProfileAlphanumericSenderIds
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The identifier of the messaging profile.
- name: page[number]
in: query
description: Page number to retrieve (1-based).
required: false
schema:
type: integer
default: 1
- name: page[size]
in: query
description: Number of items to return per page.
required: false
schema:
type: integer
default: 20
responses:
'200':
description: Successful response with a list of alphanumeric sender IDs.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AlphanumericSenderId'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'404':
$ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b'
/messaging_profiles/{id}/metrics:
get:
summary: Get detailed messaging profile metrics
description: Get detailed metrics for a specific messaging profile, broken down by time interval.
operationId: GetDetailedProfileMetrics
tags:
- Messaging
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: The identifier of the messaging profile.
- name: time_frame
in: query
required: false
schema:
$ref: '#/components/schemas/MessagingMetricsTimeFrame'
description: The time frame for metrics.
responses:
'200':
description: Successful response with detailed profile metrics.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ProfileMetrics'
example: {}
'400':
$ref: '#/components/responses/messaging_BadRequestResponse_0b38e7044b'
'401':
$ref: '#/components/responses/messaging_UnauthorizedResponse_0b38e7044b'
'404':
$ref: '#/components/responses/messaging_NotFoundResponse_0b38e7044b'
/messaging_profiles/{id}/phone_numbers:
get:
summary: List phone numbers associated with a messaging profile
operationId: ListProfilePhoneNumbers
tags:
- Profiles
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/MessagingProfileId'
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response with a list of messaging profile phone numbers.
content:
application/json:
schema:
type: object
title: List Messaging Profile Phone Numbers Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the phone numbers currently associated with the specified messaging profile.
/messaging_profiles/{id}/short_codes:
get:
summary: List short codes associated with a messaging profile
operationId: ListProfileShortCodes
tags:
- Profiles
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/MessagingProfileId'
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response with a list of messaging profile short codes.
content:
application/json:
schema:
type: object
title: List Messaging Profile Short Codes Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/ShortCode'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the short codes currently associated with the specified messaging profile.
/messaging_profiles/{profile_id}/autoresp_configs:
get:
tags:
- Opt-Out Management
summary: List Auto-Response Settings
operationId: GetAutorespConfigs
parameters:
- required: true
schema:
title: Profile Id
type: string
format: uuid
name: profile_id
in: path
description: Unique identifier of the profile.
- required: false
schema:
title: Country Code
type: string
name: country_code
in: query
description: Filter results by country code.
- name: created_at
in: query
style: deepObject
explode: true
description: 'Consolidated created_at parameter (deepObject style). Originally: created_at[gte], created_at[lte]'
schema:
type: object
properties:
gte:
title: Created At[Gte]
type: string
lte:
title: Created At[Lte]
type: string
- name: updated_at
in: query
style: deepObject
explode: true
description: 'Consolidated updated_at parameter (deepObject style). Originally: updated_at[gte], updated_at[lte]'
schema:
type: object
properties:
gte:
title: Updated At[Gte]
type: string
lte:
title: Updated At[Lte]
type: string
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_AutorespConfigsResponseSchema'
example:
data:
- op: start
keywords:
- START
- BEGIN
resp_text: Thank you for subscribing US customer.
country_code: US
id: 677ec1cb-949e-4aeb-a1c3-6d9ddffc1409
created_at: '2023-03-21T23:37:45.858535+00:00'
updated_at: '2023-03-21T23:37:45.858535+00:00'
- op: stop
keywords:
- END
- STOP
resp_text: You have unsubscribed.
country_code: US
id: 54b7e19f-98a8-416f-81d1-a2782eade48b
created_at: '2023-03-10T21:54:46.293380+00:00'
updated_at: '2023-03-10T21:54:46.293380+00:00'
- op: start
keywords:
- START
resp_text: Thank you for subscribing.
country_code: '*'
id: cfe07be1-2369-433f-be00-eb176008e834
created_at: '2023-03-14T14:46:21.097735+00:00'
updated_at: '2023-03-14T14:46:21.097735+00:00'
meta:
page_number: 1
page_size: 5
total_pages: 1
total_results: 3
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the auto-response rules configured for the specified messaging profile.
post:
tags:
- Opt-Out Management
summary: Create auto-response setting
operationId: CreateAutorespConfig
parameters:
- required: true
schema:
title: Profile Id
type: string
name: profile_id
in: path
description: Unique identifier of the profile.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AutoRespConfigCreateSchema'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AutorespConfigResponseSchema'
example:
data:
op: start
keywords:
- START
resp_text: Hello there!
country_code: US
id: c2298f86-a4dc-4cac-b6b6-4a3d01c290fa
created_at: '2023-03-22T00:06:49.068817+00:00'
updated_at: '2023-03-22T00:06:49.068817+00:00'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Creates an auto-response rule on the specified messaging profile. Matching inbound messages trigger the
configured response.
/messaging_profiles/{profile_id}/autoresp_configs/{autoresp_cfg_id}:
delete:
tags:
- Opt-Out Management
summary: Delete Auto-Response Setting
operationId: DeleteAutorespConfig
parameters:
- required: true
schema:
title: Profile Id
type: string
format: uuid
name: profile_id
in: path
description: Unique identifier of the profile.
- required: true
schema:
title: Autoresp Cfg Id
type: string
format: uuid
name: autoresp_cfg_id
in: path
description: Unique identifier of the autoresp cfg.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: string
example: OK
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Deletes the specified auto-response rule from the messaging profile.
get:
tags:
- Opt-Out Management
summary: Get Auto-Response Setting
operationId: GetAutorespConfig
parameters:
- required: true
schema:
title: Profile Id
type: string
format: uuid
name: profile_id
in: path
description: Unique identifier of the profile.
- required: true
schema:
title: Autoresp Cfg Id
type: string
format: uuid
name: autoresp_cfg_id
in: path
description: Unique identifier of the autoresp cfg.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AutorespConfigResponseSchema'
example:
data:
op: start
keywords:
- UNSTOP
resp_text: Hello there!
country_code: US
id: adc37adf-d110-4355-9e9a-262847e68e89
created_at: '2023-03-13T17:51:03.826453+00:00'
updated_at: '2023-03-13T17:51:03.826453+00:00'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the matching criteria and response content for the specified auto-response rule.
put:
tags:
- Opt-Out Management
summary: Update Auto-Response Setting
operationId: UpdateAutoRespConfig
parameters:
- required: true
schema:
title: Profile Id
type: string
format: uuid
name: profile_id
in: path
description: Unique identifier of the profile.
- required: true
schema:
title: Autoresp Cfg Id
type: string
format: uuid
name: autoresp_cfg_id
in: path
description: Unique identifier of the autoresp cfg.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AutoRespConfigCreateSchema'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AutorespConfigResponseSchema'
example:
data:
op: start
keywords:
- START
- BEGIN
resp_text: Hello there!
country_code: '*'
id: 54b7e19f-98a8-416f-81d1-a2782eade48b
created_at: '2023-03-10T21:54:46.293380+00:00'
updated_at: '2023-03-10T21:54:46.293380+00:00'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Replaces the configuration of the specified auto-response rule.
/messaging_tollfree/verification/requests:
get:
tags:
- Verification Requests
summary: List Verification Requests
description: Get a list of previously-submitted tollfree verification requests
operationId: ListVerificationRequests
parameters:
- required: true
schema:
title: Page
minimum: 1
type: integer
name: page
in: query
description: Page number to retrieve (1-based).
- description: "\n Request this many records per page\n\n This value is automatically clamped if the provided\
\ value is too large.\n "
required: true
schema:
title: Page Size
minimum: 1
type: integer
description: "\n Request this many records per page\n\n This value is automatically clamped if the\
\ provided value is too large.\n "
name: page_size
in: query
- required: false
schema:
title: Date Start
type: string
format: date-time
name: date_start
in: query
description: Start of the date range filter (inclusive, ISO 8601).
- required: false
schema:
title: Date End
type: string
format: date-time
name: date_end
in: query
description: End of the date range filter (inclusive, ISO 8601).
- required: false
schema:
$ref: '#/components/schemas/TFVerificationStatus'
name: status
in: query
description: Filter results by status.
- required: false
schema:
title: Phone Number
type: string
name: phone_number
in: query
description: Filter results by phone number.
- required: false
schema:
title: Business Name
type: string
name: business_name
in: query
description: Filter verification requests by business name
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paginated_VerificationRequestStatus_'
4XX:
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
post:
tags:
- Verification Requests
summary: Submit Verification Request
description: Submit a new tollfree verification request
operationId: SubmitVerificationRequest
parameters: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_toll_free_verification_TFVerificationRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_toll_free_verification_VerificationRequestEgress'
4XX:
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
/messaging_tollfree/verification/requests/{id}:
delete:
tags:
- Verification Requests
summary: Delete Verification Request
description: 'Delete a verification request
A request may only be deleted when when the request is in the "rejected" state.
* `HTTP 200`: request successfully deleted
* `HTTP 400`: request exists but can''t be deleted (i.e. not rejected)
* `HTTP 404`: request unknown or already deleted'
operationId: DeleteVerificationRequest
parameters:
- required: true
schema:
title: Id
type: string
format: uuid
name: id
in: path
description: Unique identifier of the resource.
responses:
'200':
description: Successful deleted
'404':
description: Not Found
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
4XX:
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
get:
summary: Get Verification Request
description: Get a single verification request by its ID.
operationId: GetVerificationRequest
tags:
- Verification Requests
parameters:
- required: true
schema:
title: Id
type: string
format: uuid
name: id
in: path
description: Unique identifier of the resource.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_toll_free_verification_VerificationRequestStatus'
4XX:
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
patch:
tags:
- Verification Requests
summary: Update Verification Request
description: Update an existing tollfree verification request. This is particularly useful when there are pending customer
actions to be taken.
operationId: UpdateVerificationRequest
parameters:
- required: true
schema:
title: Id
type: string
format: uuid
name: id
in: path
description: Unique identifier of the resource.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_toll_free_verification_TFVerificationRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_toll_free_verification_VerificationRequestEgress'
4XX:
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
/messaging_tollfree/verification/requests/{id}/status_history:
get:
tags:
- Verification Requests
summary: Get Verification Request Status History
description: 'Get the history of status changes for a verification request.
Returns a paginated list of historical status changes including the reason for each change and when it occurred.'
operationId: GetVerificationStatusHistory
parameters:
- required: true
schema:
title: Id
type: string
format: uuid
name: id
in: path
description: Unique identifier of the resource.
- required: true
schema:
title: Page Number
minimum: 1
type: integer
name: page[number]
in: query
description: Page number to retrieve (1-based).
- required: true
schema:
title: Page Size
minimum: 1
type: integer
description: Request this many records per page. This value is automatically clamped if the provided value is too
large.
name: page[size]
in: query
description: Number of items to return per page.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paginated_VerificationStatusHistoryEntry_'
4XX:
$ref: '#/components/responses/messaging_toll_free_verification_GenericErrorResponse'
/messaging_url_domains:
get:
summary: List messaging URL domains
operationId: ListMessagingUrlDomains
tags:
- Messaging URL Domains
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response with details about a messaging URL domain.
content:
application/json:
schema:
type: object
title: List Messaging Profile Url Domains Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/MessagingUrlDomain'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the URL domains available to the authenticated account for message URL shortening.
/mobile_network_operators:
get:
summary: List mobile network operators
description: Telnyx has a set of GSM mobile operators partners that are available through our mobile network roaming.
This resource is entirely managed by Telnyx and may change over time. That means that this resource won't allow any
write operations for it. Still, it's available so it can be used as a support resource that can be related to other
resources or become a configuration option.
operationId: GetMobileNetworkOperators
tags:
- Mobile Network Operators
parameters:
- $ref: '#/components/parameters/FilterMobileNetworkOperatorsConsolidated'
- $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MobileNetworkOperator'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/mobile_phone_numbers/messaging:
get:
summary: List mobile phone numbers with messaging settings
operationId: ListMobilePhoneNumbersWithMessagingSettings
tags:
- Mobile Number Settings
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response with a list of mobile phone numbers with messaging settings.
content:
application/json:
schema:
type: object
title: List Messaging Settings Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/MobilePhoneNumberWithMessagingSettings'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns mobile phone numbers with their current messaging configuration.
/mobile_phone_numbers/{id}/messaging:
get:
summary: Retrieve a mobile phone number with messaging settings
operationId: GetMobilePhoneNumberMessagingSettings
tags:
- Mobile Number Settings
parameters:
- name: id
in: path
description: Identifies the type of resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a mobile phone number.
content:
application/json:
schema:
type: object
title: Retrieve Mobile Messaging Settings Response
properties:
data:
$ref: '#/components/schemas/MobilePhoneNumberWithMessagingSettings'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the messaging configuration for the specified mobile phone number.
/mobile_push_credentials:
get:
tags:
- Push Credentials
summary: List mobile push credentials
description: Returns a paginated list of the mobile push credentials on your account, with support for filtering.
operationId: ListPushCredentials
parameters:
- $ref: '#/components/parameters/push-notifications_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[alias]'
schema:
type: object
properties:
type:
type: string
enum:
- ios
- android
example: ios
description: type of mobile push credentials
alias:
type: string
example: LucyCredential
description: Unique mobile push credential alias
responses:
'200':
description: Mobile mobile push credentials
content:
application/json:
schema:
$ref: '#/components/schemas/ListPushCredentialsResponse'
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
post:
tags:
- Push Credentials
summary: Creates a new mobile push credential
description: Creates a new mobile push credential for delivering push notifications to iOS or Android apps, and returns
the created credential.
operationId: CreatePushCredential
parameters: []
requestBody:
description: Mobile push credential parameters that need to be sent in the request
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateIosPushCredentialRequest'
- $ref: '#/components/schemas/CreateAndroidPushCredentialRequest'
required: true
responses:
'200':
description: Mobile push credential created
content:
application/json:
schema:
$ref: '#/components/schemas/PushCredentialResponse'
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unable to process request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
/mobile_push_credentials/{push_credential_id}:
delete:
tags:
- Push Credentials
summary: Deletes a mobile push credential
description: Deletes a mobile push credential based on the given `push_credential_id`
operationId: DeletePushCredentialById
parameters:
- name: push_credential_id
in: path
description: The unique identifier of a mobile push credential
required: true
schema:
type: string
format: uuid
example: 0ccc7b76-4df3-4bca-a05a-3da1ecc389f0
responses:
'204':
description: The mobile push credential was deleted successfully
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unable to process request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
get:
tags:
- Push Credentials
summary: Retrieves a mobile push credential
description: Retrieves mobile push credential based on the given `push_credential_id`
operationId: GetPushCredentialById
parameters:
- name: push_credential_id
in: path
description: The unique identifier of a mobile push credential
required: true
schema:
type: string
format: uuid
example: 0ccc7b76-4df3-4bca-a05a-3da1ecc389f0
responses:
'200':
description: Successful get mobile push credential response
content:
application/json:
schema:
$ref: '#/components/schemas/PushCredentialResponse'
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unable to process request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
/network_coverage:
get:
summary: List network coverage locations
description: List all locations and the interfaces that region supports
operationId: ListNetworkCoverage
tags:
- Coverage
parameters:
- name: filters
in: query
style: deepObject
explode: true
description: 'Consolidated filters parameter (deepObject style). Originally: filters[available_services][contains]'
schema:
type: object
properties:
available_services:
oneOf:
- $ref: '#/components/schemas/AvailableService'
description: Filter by exact available service match
- type: object
properties:
contains:
$ref: '#/components/schemas/AvailableService'
description: Filter by available services containing the specified service
additionalProperties: false
description: Available service filtering operations
additionalProperties: false
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[location.region], filter[location.site],
filter[location.pop], filter[location.code]'
schema:
type: object
properties:
location.region:
type: string
example: AMER
description: The region of associated location to filter on.
location.site:
type: string
example: SJC
description: The site of associated location to filter on.
location.pop:
type: string
example: SV1
description: The POP of associated location to filter on.
location.code:
type: string
example: silicon_valley-ca
description: The code of associated location to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NetworkCoverage'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/networks:
get:
summary: List all Networks
description: Returns a paginated list of the private networks on your account, with support for filtering.
operationId: ListNetworks
tags:
- Networks
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]'
schema:
type: object
properties:
name:
type: string
example: test network
description: The network name to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Network'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a Network
description: Creates a new private network, the container that links your WireGuard interfaces, gateways, and cross
connects.
operationId: CreateNetwork
tags:
- Networks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NetworkCreate'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Network'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/networks/{id}:
delete:
summary: Delete a Network
description: Permanently deletes the specified network from your account.
operationId: DeleteNetwork
tags:
- Networks
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Network'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Retrieve a Network
description: Returns the details of a single network by its identifier.
operationId: GetNetwork
tags:
- Networks
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Network'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update a Network
description: Updates the specified network's attributes and returns the updated network.
operationId: UpdateNetwork
tags:
- Networks
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NetworkCreate'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Network'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/networks/{id}/default_gateway:
delete:
summary: Delete Default Gateway.
description: Removes the default gateway from the specified network.
operationId: DeleteDefaultGateway
tags:
- Networks
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DefaultGateway'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Get Default Gateway status.
description: Returns the status of the default gateway configured on the specified network.
operationId: GetDefaultGateway
tags:
- Networks
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DefaultGateway'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create Default Gateway.
description: Creates a default gateway on the specified network, directing the network's outbound traffic through the
chosen gateway.
operationId: CreateDefaultGateway
tags:
- Networks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DefaultGateway'
required: true
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DefaultGateway'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/networks/{id}/network_interfaces:
get:
summary: List all Interfaces for a Network.
description: Returns a paginated list of the interfaces attached to the specified network, with support for filtering.
operationId: ListNetworkInterfaces
tags:
- Networks
parameters:
- $ref: '#/components/parameters/ResourceId'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[name], filter[type], filter[status]'
schema:
type: object
properties:
name:
type: string
example: test interface
description: The interface name to filter on.
type:
type: string
example: wireguard_interface
description: The interface type to filter on.
status:
$ref: '#/components/schemas/InterfaceStatus'
description: The interface status to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NetworkInterface'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/noise_suppression_engines:
get:
summary: List available noise suppression engines
description: Returns all noise suppression engines available to the authenticated user. Engines gated behind a feature
flag are included only when the flag is enabled for the user's account. Results are not paginated; the number of engines
is expected to remain small.
operationId: listNoiseSuppressionEngines
tags:
- Noise Suppression Engines
x-endpoint-cost: light
x-latency-category: responsive
responses:
'200':
description: A list of noise suppression engines available to the authenticated user
content:
application/json:
schema:
$ref: '#/components/schemas/NoiseSuppressionEnginesListResponse'
example:
data:
- value: denoiser
label: Denoiser
default_attenuation_level: 0
- value: deep_filter_net
label: DeepFilterNet
default_attenuation_level: 80
'401':
description: Unauthorized — the request did not carry valid Telnyx API credentials
content:
application/json:
schema:
$ref: '#/components/schemas/noise-suppression-engines_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
/notification_channels:
get:
description: Returns a paginated list of your notification channels, the destinations that receive notifications.
summary: List notification channels
operationId: ListNotificationChannels
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- $ref: '#/components/parameters/notifications_FilterConsolidated'
responses:
'200':
description: Returns a list of notification channels.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NotificationChannel'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
post:
description: Creates a new notification channel defining where notifications are delivered, and returns the created
channel.
summary: Create a notification channel
operationId: CreateNotificationChannels
tags:
- Notifications
requestBody:
description: Add a Notification Channel
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationChannel'
responses:
'200':
description: A Notification Channel response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationChannel'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_channels/{id}:
delete:
description: Deletes the specified notification channel so notifications are no longer delivered to it.
summary: Delete a notification channel
operationId: DeleteNotificationChannel
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
responses:
'200':
description: A Notification Channel response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationChannel'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
get:
description: Returns the details of a single notification channel by its identifier.
summary: Get a notification channel
operationId: GetNotificationChannel
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
responses:
'200':
description: A Notification Channel response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationChannel'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'404':
$ref: '#/components/responses/notifications_NotFoundResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
patch:
description: Updates the specified notification channel and returns the updated channel.
summary: Update a notification channel
operationId: UpdateNotificationChannel
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
requestBody:
description: Update notification channel object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationChannel'
responses:
'200':
description: A Notification Channel response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationChannel'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_event_conditions:
get:
description: Returns a list of your notifications events conditions.
summary: List all Notifications Events Conditions
operationId: FindNotificationsEventsConditions
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- $ref: '#/components/parameters/notifications_FilterConsolidated'
responses:
'200':
description: Returns a list of notification event conditions available.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NotificationEventCondition'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_events:
get:
description: Returns a list of your notifications events.
summary: List all Notifications Events
operationId: FindNotificationsEvents
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Returns a list of notification events available.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NotificationEvent'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_profiles:
get:
description: Returns a list of your notifications profiles.
summary: List all Notifications Profiles
operationId: FindNotificationsProfiles
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Returns a list of notification profiles.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NotificationProfile'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
post:
description: Creates a new notification profile, a named grouping used to organize notification settings, and returns
it.
summary: Create a notification profile
operationId: CreateNotificationProfile
tags:
- Notifications
requestBody:
description: Add a Notification Profile
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationProfile'
responses:
'200':
description: A Notification Profile response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationProfile'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_profiles/{id}:
delete:
description: Deletes the specified notification profile from your account.
summary: Delete a notification profile
operationId: DeleteNotificationProfile
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
responses:
'200':
description: A Notification Profile response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationProfile'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
get:
description: Returns the details of a single notification profile by its identifier.
operationId: GetNotificationProfile
summary: Get a notification profile
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
responses:
'200':
description: A Notification Profile response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationProfile'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'404':
$ref: '#/components/responses/notifications_NotFoundResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
patch:
description: Updates the specified notification profile and returns the updated profile.
operationId: UpdateNotificationProfile
summary: Update a notification profile
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
requestBody:
description: Update notification profile object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationProfile'
responses:
'200':
description: A Notification Profile response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationProfile'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_settings:
get:
description: Returns a paginated list of your notification settings, which map notification event types to profiles
and channels.
summary: List notification settings
operationId: ListNotificationSettings
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- $ref: '#/components/parameters/notifications_FilterConsolidated'
responses:
'200':
description: Returns a list of notification settings.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/NotificationSetting'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
post:
description: Adds a notification setting that enables delivery of a notification event type to a notification profile.
summary: Add a Notification Setting
operationId: CreateNotificationSetting
tags:
- Notifications
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationSetting'
responses:
'200':
description: A Notification Setting response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationSetting'
'201':
description: A Notification Setting response - async
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationSetting'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/notification_settings/{id}:
delete:
description: Deletes the specified notification setting, disabling that notification delivery.
summary: Delete a notification setting
operationId: DeleteNotificationSetting
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
responses:
'200':
description: A Notification Setting response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationSetting'
'201':
description: A Notification Setting response - async
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationSetting'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
get:
description: Returns the details of a single notification setting by its identifier.
summary: Get a notification setting
operationId: GetNotificationSetting
tags:
- Notifications
parameters:
- $ref: '#/components/parameters/notifications_Id'
responses:
'200':
description: A Notification Setting response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NotificationSetting'
'400':
$ref: '#/components/responses/notifications_BadRequestResponse'
'404':
$ref: '#/components/responses/notifications_NotFoundResponse'
'422':
$ref: '#/components/responses/notifications_UnprocessableEntity'
'500':
$ref: '#/components/responses/notifications_GenericErrorResponse'
/number_block_orders:
get:
summary: List number block orders
description: Get a paginated list of number block orders.
operationId: ListNumberBlockOrders
tags:
- Phone Number Block Orders
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.starting_number]'
schema:
type: object
properties:
status:
type: string
example: pending
description: Filter number block orders by status.
created_at:
type: object
description: Filter number block orders by date range.
properties:
gt:
type: string
example: '2018-01-01T00:00:00.000000Z'
description: Filter number block orders later than this value.
lt:
type: string
example: '2018-01-01T00:00:00.000000Z'
description: Filter number block orders earlier than this value.
additionalProperties: false
phone_numbers.starting_number:
type: string
example: '+19705555000'
description: Filter number block orders having these phone numbers.
responses:
'200':
description: Successful response with a list of number block orders.
content:
application/json:
schema:
type: object
title: List Number Block Orders Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/NumberBlockOrder'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a number block order
description: Creates an order for a block of consecutive phone numbers and returns the created order. Track fulfillment
through the order's status.
operationId: CreateNumberBlockOrder
tags:
- Phone Number Block Orders
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateNumberBlockOrderRequest'
responses:
'200':
description: Successful response with details about a number block order.
content:
application/json:
schema:
type: object
title: Number Block Order Response
properties:
data:
$ref: '#/components/schemas/NumberBlockOrder'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_block_orders/{number_block_order_id}:
get:
summary: Retrieve a number block order
description: Get an existing phone number block order.
operationId: RetrieveNumberBlockOrder
tags:
- Phone Number Block Orders
parameters:
- name: number_block_order_id
in: path
description: The number block order ID.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a number block order.
content:
application/json:
schema:
type: object
title: Number Block Order Response
properties:
data:
$ref: '#/components/schemas/NumberBlockOrder'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_lookup/{phone_number}:
get:
summary: Lookup phone number data
description: Returns information about the provided phone number.
operationId: LookupNumber
tags:
- Number Lookup
parameters:
- $ref: '#/components/parameters/PhoneNumber'
- $ref: '#/components/parameters/NumberLookupType'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Number Lookup Response
properties:
data:
$ref: '#/components/schemas/NumberLookupRecord'
'422':
$ref: '#/components/responses/number-lookup_UnprocessableEntity'
default:
$ref: '#/components/responses/number-lookup_GenericErrorResponse'
/number_order_phone_numbers:
get:
summary: Retrieve a list of phone numbers associated to orders
description: Get a list of phone numbers associated to orders.
operationId: RetrieveOrderPhoneNumbers
tags:
- Phone Number Orders
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[country_code]'
schema:
type: object
properties:
country_code:
type: string
example: US
description: Country code of the order phone number.
responses:
'200':
description: Successful response with a list of number order phone numbers.
content:
application/json:
schema:
type: object
title: List Number Order Phone Numbers Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/NumberOrderPhoneNumber'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_order_phone_numbers/{id}/requirement_group:
post:
summary: Update requirement group for a phone number order
operationId: updateNumberOrderPhoneNumberRequirementGroup
tags:
- Requirement Groups
parameters:
- name: id
in: path
required: true
description: The unique identifier of the number order phone number
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- requirement_group_id
properties:
requirement_group_id:
type: string
format: uuid
description: The ID of the requirement group to associate
example:
requirement_group_id: a4b201f9-8646-4e54-a7d2-b2e403eeaf8c
responses:
'200':
description: Successful response with updated phone number order details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/NumberOrderPhoneNumberRequirementGroupResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Associates an existing requirement group with a phone number in a number order. The response contains the
updated number-order phone-number details.
/number_order_phone_numbers/{number_order_phone_number_id}:
get:
summary: Retrieve a single phone number within a number order.
description: Get an existing phone number in number order.
operationId: GetNumberOrderPhoneNumber
tags:
- Phone Number Orders
parameters:
- name: number_order_phone_number_id
in: path
description: The number order phone number ID.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a number order phone number.
content:
application/json:
schema:
type: object
title: Number Order Phone Number Response
properties:
data:
$ref: '#/components/schemas/NumberOrderPhoneNumber'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update requirements for a single phone number within a number order.
description: Updates requirements for a single phone number within a number order.
operationId: UpdateNumberOrderPhoneNumber
tags:
- Phone Number Orders
parameters:
- name: number_order_phone_number_id
in: path
description: The number order phone number ID.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateNumberOrderPhoneNumberRequest'
responses:
'200':
description: Successful response with details about a number order phone number.
content:
application/json:
schema:
type: object
title: Number Order Phone Number Response
properties:
data:
$ref: '#/components/schemas/NumberOrderPhoneNumber'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_orders:
get:
summary: List number orders
description: Returns a paginated list of your phone number orders, with support for filtering.
operationId: ListNumberOrders
tags:
- Phone Number Orders
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers_count],
filter[customer_reference], filter[requirements_met]'
schema:
type: object
properties:
status:
type: string
description: Filter number orders by status.
created_at:
type: object
description: Filter number orders by date range.
properties:
gt:
type: string
description: Filter number orders later than this value.
lt:
type: string
description: Filter number orders earlier than this value.
additionalProperties: false
phone_numbers_count:
type: string
description: Filter number order with this amount of numbers
customer_reference:
type: string
description: Filter number orders via the customer reference set.
requirements_met:
type: boolean
description: Filter number orders by requirements met.
responses:
'200':
description: Successful response with a list of number orders.
content:
application/json:
schema:
type: object
title: List Number Orders Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/NumberOrder'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a number order
description: Creates an order to purchase the specified phone numbers and returns the created order. Track fulfillment
through the order's status.
operationId: CreateNumberOrder
tags:
- Phone Number Orders
x-endpoint-cost: heavy
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateNumberOrderRequest'
responses:
'200':
description: Successful response with details about a number order.
content:
application/json:
schema:
type: object
title: Number Order Response
properties:
data:
$ref: '#/components/schemas/NumberOrderWithPhoneNumbers'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_orders/{number_order_id}:
get:
summary: Retrieve a number order
description: Returns the details of an existing phone number order, including its status and the numbers included.
operationId: RetrieveNumberOrder
tags:
- Phone Number Orders
parameters:
- name: number_order_id
in: path
description: The number order ID.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a number order.
content:
application/json:
schema:
type: object
title: Number Order Response
properties:
data:
$ref: '#/components/schemas/NumberOrderWithPhoneNumbers'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update a number order
description: Updates an existing phone number order, for example to satisfy regulatory requirements attached to the
order, and returns the updated order.
operationId: UpdateNumberOrder
tags:
- Phone Number Orders
parameters:
- name: number_order_id
in: path
description: The number order ID.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateNumberOrderRequest'
responses:
'200':
description: Successful response with details about a number order.
content:
application/json:
schema:
type: object
title: Number Order Response
properties:
data:
$ref: '#/components/schemas/NumberOrderWithPhoneNumbers'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_reservations:
get:
summary: List number reservations
description: Gets a paginated list of phone number reservations.
operationId: ListNumberReservations
tags:
- Phone Number Reservations
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[created_at], filter[phone_numbers.phone_number],
filter[customer_reference]'
schema:
type: object
properties:
status:
type: string
description: Filter number reservations by status.
created_at:
type: object
description: Filter number reservations by date range.
properties:
gt:
type: string
description: Filter number reservations later than this value.
lt:
type: string
description: Filter number reservations earlier than this value.
additionalProperties: false
phone_numbers.phone_number:
type: string
description: Filter number reservations having these phone numbers.
customer_reference:
type: string
description: Filter number reservations via the customer reference set.
responses:
'200':
description: Successful response with a list of number reservations.
content:
application/json:
schema:
type: object
title: List Number Reservations Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/NumberReservation'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a number reservation
description: Creates a Phone Number Reservation for multiple numbers.
operationId: CreateNumberReservation
tags:
- Phone Number Reservations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateNumberReservationRequest'
responses:
'200':
description: Successful response with details about a number reservation.
content:
application/json:
schema:
type: object
title: Number Reservation Response
properties:
data:
$ref: '#/components/schemas/NumberReservation'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_reservations/{number_reservation_id}:
get:
summary: Retrieve a number reservation
description: Returns the details of a single phone number reservation, including its status and the reserved numbers.
operationId: RetrieveNumberReservation
tags:
- Phone Number Reservations
parameters:
- name: number_reservation_id
in: path
description: The number reservation ID.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a number reservation.
content:
application/json:
schema:
type: object
title: Number Reservation Response
properties:
data:
$ref: '#/components/schemas/NumberReservation'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/number_reservations/{number_reservation_id}/actions/extend:
post:
summary: Extend a number reservation
description: Extends reservation expiry time on all phone numbers.
operationId: ExtendNumberReservationExpiryTime
tags:
- Phone Number Reservations
parameters:
- name: number_reservation_id
in: path
description: The number reservation ID.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a number reservation.
content:
application/json:
schema:
type: object
title: Number Reservation Response
properties:
data:
$ref: '#/components/schemas/NumberReservation'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/numbers_features:
post:
summary: Retrieve the features for a list of numbers
description: Retrieve the features for a list of numbers
operationId: PostNumbersFeatures
tags:
- numbers features
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
phone_numbers:
type: array
items:
type: string
required:
- phone_numbers
example:
phone_numbers:
- '+19705555098'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
phone_number:
type: string
features:
type: array
items:
type: string
required:
- phone_number
- features
example:
data:
- phone_number: string
features:
- string
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/oauth/authorize:
get:
operationId: AuthorizeOAuth
tags:
- OAuth Protocol
summary: OAuth authorization endpoint
description: OAuth 2.0 authorization endpoint for the authorization code flow
security: []
parameters:
- name: response_type
in: query
required: true
schema:
type: string
enum:
- code
description: OAuth response type
- name: client_id
in: query
required: true
schema:
type: string
description: OAuth client identifier
- name: redirect_uri
in: query
required: true
schema:
type: string
format: uri
description: Redirect URI
- name: scope
in: query
schema:
type: string
description: Space-separated list of requested scopes
example: admin
- name: state
in: query
schema:
type: string
description: State parameter for CSRF protection
- name: code_challenge
in: query
schema:
type: string
description: PKCE code challenge
- name: code_challenge_method
in: query
schema:
type: string
enum:
- plain
- S256
description: PKCE code challenge method
responses:
'200':
description: Consent page displayed (when consent UI is embedded)
content:
text/html:
schema:
type: string
example: Authorize application Authorize My App My
App is requesting access to your Telnyx account.
Allow Deny
'302':
description: Redirect to consent page or client with authorization code/error
'400':
description: Invalid request
content:
text/html:
schema:
type: string
example: Authorization consent page
'404':
description: Client not found
content:
text/html:
schema:
type: string
'422':
description: Invalid redirect URI
content:
text/html:
schema:
type: string
/oauth/clients:
get:
operationId: ListOAuthClients
tags:
- OAuth Clients
summary: List OAuth clients
description: Retrieve a paginated list of OAuth clients for the authenticated user
parameters:
- name: page[size]
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Number of results per page
- name: page[number]
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number
- name: filter[client_type]
in: query
schema:
type: string
enum:
- confidential
- public
description: Filter by client type
- name: filter[verified]
in: query
schema:
type: boolean
description: Filter by verification status
- name: filter[allowed_grant_types][contains]
in: query
schema:
type: string
enum:
- client_credentials
- authorization_code
- refresh_token
description: Filter by allowed grant type
- name: filter[name]
in: query
schema:
type: string
description: Filter by exact client name
- name: filter[name][contains]
in: query
schema:
type: string
description: Filter by client name containing text
- name: filter[client_id]
in: query
schema:
type: string
description: Filter by client ID
responses:
'200':
description: List of OAuth clients
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/OAuthClient'
meta:
$ref: '#/components/schemas/oauth_PaginationMeta'
example:
data:
- record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
meta:
page_number: 0
page_size: 0
total_results: 0
total_pages: 0
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
post:
operationId: CreateOAuthClient
tags:
- OAuth Clients
summary: Create OAuth client
description: Creates a new OAuth client on your account for authenticating third-party integrations, and returns the
created client.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OAuthClientCreateRequest'
responses:
'201':
description: OAuth client created successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthClient'
example:
data:
record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
/oauth/clients/{id}:
delete:
operationId: DeleteOAuthClient
tags:
- OAuth Clients
summary: Delete OAuth client
description: Permanently deletes the specified OAuth client from your account.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth client ID
responses:
'204':
description: OAuth client deleted successfully
'404':
description: OAuth client not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
example:
error: string
error_description: string
x-latency-category: responsive
get:
operationId: GetOAuthClient
tags:
- OAuth Clients
summary: Get OAuth client
description: Returns the details of a single OAuth client on your account by its ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth client ID
responses:
'200':
description: OAuth client details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthClient'
example:
data:
record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth client not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
put:
operationId: UpdateOAuthClient
tags:
- OAuth Clients
summary: Update OAuth client
description: Updates the specified OAuth client's configuration and returns the updated client.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth client ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OAuthClientUpdateRequest'
responses:
'200':
description: OAuth client updated successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthClient'
example:
data:
record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth client not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
/oauth/consent/{consent_token}:
get:
operationId: GetOAuthConsentToken
tags:
- OAuth Protocol
summary: Get OAuth consent token
description: Retrieve details about an OAuth consent token
parameters:
- name: consent_token
in: path
required: true
schema:
type: string
description: OAuth consent token
responses:
'200':
description: Consent token details
content:
application/json:
schema:
$ref: '#/components/schemas/ConsentTokenResponse'
example:
data:
client_id: string
name: string
requested_scopes:
- id: string
name: string
description: string
redirect_uri: https://example.com
verified: false
'422':
description: Invalid consent token
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/oauth/grants:
get:
operationId: ListOAuthGrants
tags:
- OAuth Grants
summary: List OAuth grants
description: Retrieve a paginated list of OAuth grants for the authenticated user
parameters:
- name: page[size]
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Number of results per page
- name: page[number]
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number
responses:
'200':
description: List of OAuth grants
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/OAuthGrant'
meta:
$ref: '#/components/schemas/oauth_PaginationMeta'
example:
data:
- id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type: oauth_grant
client_id: string
scopes:
- string
created_at: '2024-01-23T18:10:02.574Z'
meta:
page_number: 0
page_size: 0
total_results: 0
total_pages: 0
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
post:
operationId: CreateOAuthGrant
tags:
- OAuth Protocol
summary: Create OAuth grant
description: Creates an OAuth authorization grant and returns the grant response for completing the authorization flow.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOAuthGrantRequest'
example:
allowed: false
consent_token: string
responses:
'200':
description: Grant created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGrantResponse'
example:
redirect_uri: https://example.com
'422':
description: Invalid consent token
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/oauth/grants/{id}:
delete:
operationId: RevokeOAuthGrant
tags:
- OAuth Grants
summary: Revoke OAuth grant
description: Revokes the specified OAuth grant, withdrawing the access previously granted to the client.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth grant ID
responses:
'200':
description: OAuth grant revoked successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthGrant'
example:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type: oauth_grant
client_id: string
scopes:
- string
created_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth grant not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
get:
operationId: GetOAuthGrant
tags:
- OAuth Grants
summary: Get OAuth grant
description: Returns the details of a single OAuth grant on your account by its ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth grant ID
responses:
'200':
description: OAuth grant details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthGrant'
example:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type: oauth_grant
client_id: string
scopes:
- string
created_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth grant not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_Error'
x-latency-category: responsive
/oauth/introspect:
post:
operationId: IntrospectOAuthToken
tags:
- OAuth Protocol
summary: Token introspection
description: Introspect an OAuth access token to check its validity and metadata
security:
- oauthClientAuth: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/IntrospectRequest'
example:
token: string
application/json:
schema:
$ref: '#/components/schemas/IntrospectRequest'
example:
token: string
responses:
'200':
description: Introspection response
content:
application/json:
schema:
$ref: '#/components/schemas/IntrospectResponse'
example:
active: false
scope: string
client_id: string
exp: 0
iat: 0
iss: string
aud: string
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
example:
error: invalid_request
'401':
description: Invalid client credentials
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
example:
error: invalid_client
/oauth/jwks:
get:
operationId: GetOAuthJWKS
tags:
- OAuth Protocol
summary: JSON Web Key Set
description: Retrieve the JSON Web Key Set for token verification
security: []
responses:
'200':
description: JSON Web Key Set
content:
application/json:
schema:
$ref: '#/components/schemas/JWKSet'
example:
keys:
- kty: string
use: string
alg: string
kid: string
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/oauth/register:
post:
operationId: RegisterOAuthClient
tags:
- OAuth Protocol
summary: Dynamic client registration
description: Register a new OAuth client dynamically (RFC 7591)
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OAuthDynamicRegistrationRequest'
responses:
'201':
description: Client registered successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OAuthDynamicRegistrationResponse'
'400':
description: Invalid client metadata
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: invalid_client_metadata
error_description:
type: string
example: The client metadata was invalid
invalid_fields:
type: object
additionalProperties:
type: array
items:
type: string
/oauth/token:
post:
operationId: ExchangeOAuthToken
tags:
- OAuth Protocol
summary: OAuth token endpoint
description: Exchange authorization code, client credentials, or refresh token for access token
security:
- oauthClientAuth: []
- {}
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TokenRequest'
application/json:
schema:
$ref: '#/components/schemas/TokenRequest'
responses:
'200':
description: Token response
content:
application/json:
schema:
$ref: '#/components/schemas/TokenResponse'
example:
access_token: string
token_type: Bearer
expires_in: 0
scope: string
refresh_token: string
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
examples:
invalid_request:
value:
error: invalid_request
invalid_grant:
value:
error: invalid_grant
unsupported_grant_type:
value:
error: unsupported_grant_type
invalid_scope:
value:
error: invalid_scope
'401':
description: Invalid client credentials
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
example:
error: invalid_client
/oauth_clients:
get:
operationId: ListOAuthClients
tags:
- OAuth Clients
summary: List OAuth clients
description: Retrieve a paginated list of OAuth clients for the authenticated user
parameters:
- name: page[size]
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Number of results per page
- name: page[number]
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number
- name: filter[client_type]
in: query
schema:
type: string
enum:
- confidential
- public
description: Filter by client type
- name: filter[verified]
in: query
schema:
type: boolean
description: Filter by verification status
- name: filter[allowed_grant_types][contains]
in: query
schema:
type: string
enum:
- client_credentials
- authorization_code
- refresh_token
description: Filter by allowed grant type
- name: filter[name]
in: query
schema:
type: string
description: Filter by exact client name
- name: filter[name][contains]
in: query
schema:
type: string
description: Filter by client name containing text
- name: filter[client_id]
in: query
schema:
type: string
description: Filter by client ID
responses:
'200':
description: List of OAuth clients
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/OAuthClient'
meta:
$ref: '#/components/schemas/oauth_oauth_PaginationMeta'
example:
data:
- record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
meta:
page_number: 0
page_size: 0
total_results: 0
total_pages: 0
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
post:
operationId: CreateOAuthClient
tags:
- OAuth Clients
summary: Create OAuth client
description: Creates a new OAuth client on your account for authenticating third-party integrations, and returns the
created client.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OAuthClientCreateRequest'
responses:
'201':
description: OAuth client created successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthClient'
example:
data:
record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/oauth_clients/{id}:
delete:
operationId: DeleteOAuthClient
tags:
- OAuth Clients
summary: Delete OAuth client
description: Permanently deletes the specified OAuth client from your account.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth client ID
responses:
'204':
description: OAuth client deleted successfully
'404':
description: OAuth client not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
example:
error: string
error_description: string
get:
operationId: GetOAuthClient
tags:
- OAuth Clients
summary: Get OAuth client
description: Returns the details of a single OAuth client on your account by its ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth client ID
responses:
'200':
description: OAuth client details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthClient'
example:
data:
record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth client not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
put:
operationId: UpdateOAuthClient
tags:
- OAuth Clients
summary: Update OAuth client
description: Updates the specified OAuth client's configuration and returns the updated client.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth client ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OAuthClientUpdateRequest'
responses:
'200':
description: OAuth client updated successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthClient'
example:
data:
record_type: oauth_client
client_id: string
name: string
org_id: string
user_id: string
allowed_scopes:
- string
client_type: public
require_pkce: false
allowed_grant_types:
- client_credentials
redirect_uris:
- https://example.com
created_at: '2024-01-23T18:10:02.574Z'
updated_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth client not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/oauth_grants:
get:
operationId: ListOAuthGrants
tags:
- OAuth Grants
summary: List OAuth grants
description: Retrieve a paginated list of OAuth grants for the authenticated user
parameters:
- name: page[size]
in: query
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: Number of results per page
- name: page[number]
in: query
schema:
type: integer
minimum: 1
default: 1
description: Page number
responses:
'200':
description: List of OAuth grants
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/OAuthGrant'
meta:
$ref: '#/components/schemas/oauth_oauth_PaginationMeta'
example:
data:
- id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type: oauth_grant
client_id: string
scopes:
- string
created_at: '2024-01-23T18:10:02.574Z'
meta:
page_number: 0
page_size: 0
total_results: 0
total_pages: 0
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/oauth_grants/{id}:
delete:
operationId: RevokeOAuthGrant
tags:
- OAuth Grants
summary: Revoke OAuth grant
description: Revokes the specified OAuth grant, withdrawing the access previously granted to the client.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth grant ID
responses:
'200':
description: OAuth grant revoked successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthGrant'
example:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type: oauth_grant
client_id: string
scopes:
- string
created_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth grant not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
get:
operationId: GetOAuthGrant
tags:
- OAuth Grants
summary: Get OAuth grant
description: Returns the details of a single OAuth grant on your account by its ID.
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
description: OAuth grant ID
responses:
'200':
description: OAuth grant details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/OAuthGrant'
example:
data:
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type: oauth_grant
client_id: string
scopes:
- string
created_at: '2024-01-23T18:10:02.574Z'
'404':
description: OAuth grant not found
content:
application/json:
schema:
$ref: '#/components/schemas/oauth_oauth_Error'
/operator_connect/actions/refresh:
post:
summary: Refresh Operator Connect integration
description: This endpoint will make an asynchronous request to refresh the Operator Connect integration with Microsoft
Teams for the current user. This will create new external connections on the user's account if needed, and/or report
the integration results as [log messages](https://developers.telnyx.com/api-reference/external-connections/list-all-log-messages#list-all-log-messages).
operationId: OperatorConnectRefresh
tags:
- External Connections
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Operator Connect Refresh Response
properties:
success:
type: boolean
description: Describes wether or not the operation was successful
example: true
message:
type: string
description: A message describing the result of the operation
example: Operator connect refresh already in progress
'202':
description: Successful response
content:
application/json:
schema:
type: object
title: Operator Connect Refresh Response
properties:
success:
type: boolean
description: Describes wether or not the operation was successful
example: true
message:
type: string
description: A message describing the result of the operation
example: Operator connect refresh started
'401':
description: Unauthorized
/organizations/users:
get:
description: Returns a list of the users in your organization.
summary: List organization users
operationId: ListOrganizationUsers
tags:
- Organization Users
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/users_PageNumber'
- $ref: '#/components/parameters/users_PageSize'
- $ref: '#/components/parameters/FilterOrganizationUserStatus'
- $ref: '#/components/parameters/FilterOrganizationUserEmail'
- $ref: '#/components/parameters/IncludeGroups'
responses:
'200':
description: Successful response with a list of organization users.
content:
application/json:
schema:
type: object
title: List Organization Users Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/OrganizationUser'
meta:
$ref: '#/components/schemas/users_PaginationMeta'
'400':
$ref: '#/components/responses/users_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/users_UnauthorizedResponse'
/organizations/users/users_groups_report:
get:
description: Returns a report of all users in your organization with their group memberships. This endpoint returns
all users without pagination and always includes group information. The report can be retrieved in JSON or CSV format
by sending specific content-type headers.
summary: Get organization users groups report
operationId: GetOrganizationUsersGroupsReport
tags:
- Organization Users
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- name: Accept
in: header
description: Specify the response format. Use 'application/json' for JSON format or 'text/csv' for CSV format.
required: false
schema:
type: string
enum:
- application/json
- text/csv
default: application/json
responses:
'200':
description: Successful response with a list of organization users and their group memberships.
content:
application/json:
schema:
type: object
title: Users Groups Report Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/OrganizationUserWithGroups'
example:
data:
- id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: organization_sub_user
email: user@example.com
user_status: enabled
organization_user_bypasses_sso: false
created_at: '2018-02-02T22:25:27.521Z'
last_sign_in_at: '2018-02-02T22:25:27.521Z'
groups:
- id: 7b09cdc3-8948-47f0-aa62-74ac943d6c59
name: Engineering
- id: 8c09cdc3-8948-47f0-aa62-74ac943d6c60
name: Sales
- id: 9d09cdc3-8948-47f0-aa62-74ac943d6c61
record_type: organization_owner
email: owner@example.com
user_status: enabled
organization_user_bypasses_sso: false
created_at: '2018-01-01T00:00:00.000Z'
last_sign_in_at: '2018-02-02T22:25:27.521Z'
groups: []
text/csv:
schema:
type: string
description: 'CSV formatted report of users and their groups. Columns: id, email, user_status, created_at,
last_sign_in_at, groups (comma-separated list of group names).'
example: 'id,email,user_status,created_at,last_sign_in_at,groups
6a09cdc3-8948-47f0-aa62-74ac943d6c58,user@example.com,enabled,2018-02-02T22:25:27.521Z,2018-02-02T22:25:27.521Z,"Engineering,
Sales"'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/users_UnauthorizedResponse'
'404':
$ref: '#/components/responses/users_NotFoundResponse'
/organizations/users/{id}:
get:
description: Returns the details of a user in your organization, optionally including the groups the user belongs to.
summary: Get organization user
operationId: GetOrganizationUser
tags:
- Organization Users
parameters:
- name: id
in: path
description: Organization User ID
required: true
schema:
type: string
- $ref: '#/components/parameters/IncludeGroups'
x-group-parameters: 'true'
x-endpoint-cost: medium
responses:
'200':
description: Successful response with details about an Organization User.
content:
application/json:
schema:
type: object
title: Organization User Response
properties:
data:
$ref: '#/components/schemas/OrganizationUser'
'400':
$ref: '#/components/responses/users_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/users_UnauthorizedResponse'
'404':
$ref: '#/components/responses/users_NotFoundResponse'
/organizations/users/{id}/actions/remove:
post:
description: Removes the specified user from your organization and returns the result of the removal.
summary: Delete organization user
operationId: DeleteOrganizationUser
tags:
- Organization Users
parameters:
- name: id
in: path
description: Organization User ID
required: true
schema:
type: string
x-group-parameters: 'true'
x-endpoint-cost: medium
responses:
'200':
description: Successful response with details about an Organization User.
content:
application/json:
schema:
type: object
title: Organization User Response
properties:
data:
$ref: '#/components/schemas/OrganizationUser'
'400':
$ref: '#/components/responses/users_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/users_UnauthorizedResponse'
'404':
$ref: '#/components/responses/users_NotFoundResponse'
/ota_updates:
get:
summary: List OTA updates
operationId: ListOtaUpdates
tags:
- OTA updates
parameters:
- $ref: '#/components/parameters/FilterOTAUpdatesConsolidated'
- $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SimplifiedOTAUpdate'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
description: Retrieve a paginated list of over-the-air (OTA) update operations for your SIM cards.
/ota_updates/{id}:
get:
summary: Get OTA update
description: This API returns the details of an Over the Air (OTA) update.
operationId: GetOtaUpdate
tags:
- OTA updates
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CompleteOTAUpdate'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/outbound_voice_profiles:
get:
description: Get all outbound voice profiles belonging to the user that match the given filters.
summary: Get all outbound voice profiles
operationId: ListOutboundVoiceProfiles
tags:
- Outbound Voice Profiles
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/outbound-voice-profiles_PageConsolidated'
- $ref: '#/components/parameters/outbound-voice-profiles_FilterConsolidated'
- $ref: '#/components/parameters/SortOutboundVoiceProfile'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: List Outbound Voice Profiles Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/OutboundVoiceProfile'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'422':
description: Bad request
post:
description: Creates a new outbound voice profile defining calling permissions, destinations, and limits for outbound
calls, and returns the created profile.
summary: Create an outbound voice profile
operationId: CreateVoiceProfile
tags:
- Outbound Voice Profiles
requestBody:
description: Parameters that can be defined when creating an outbound voice profile
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOutboundVoiceProfileRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Outbound Voice Profile Response
properties:
data:
$ref: '#/components/schemas/OutboundVoiceProfile'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
/outbound_voice_profiles/{id}:
delete:
description: Deletes an existing outbound voice profile.
summary: Delete an outbound voice profile
operationId: DeleteOutboundVoiceProfile
tags:
- Outbound Voice Profiles
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Outbound Voice Profile Response
properties:
data:
$ref: '#/components/schemas/OutboundVoiceProfile'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
get:
description: Retrieves the details of an existing outbound voice profile.
summary: Retrieve an outbound voice profile
operationId: GetOutboundVoiceProfile
tags:
- Outbound Voice Profiles
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Outbound Voice Profile Response
properties:
data:
$ref: '#/components/schemas/OutboundVoiceProfile'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
patch:
description: Updates an existing outbound voice profile.
summary: Updates an existing outbound voice profile.
operationId: UpdateOutboundVoiceProfile
tags:
- Outbound Voice Profiles
requestBody:
description: Parameters that can be updated on an outbound voice profile
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOutboundVoiceProfileRequest'
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Outbound Voice Profile Response
properties:
data:
$ref: '#/components/schemas/OutboundVoiceProfile'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
'409':
description: Conflict. Another update to this outbound voice profile is still in progress. Wait and retry the request
later.
content:
application/json:
schema:
$ref: '#/components/schemas/outbound-voice-profiles_ErrorResponse'
example:
errors:
- detail: A previous update to this outbound voice profile is still in progress. Please try again later.
/pay_connectors:
get:
operationId: listPayConnectors
summary: List Pay connectors
description: List connectors belonging to the authenticated organization, including connectors created by other users
in that organization. Set filter[type]=generic to restrict results to the type covered here. Results default to newest
created_at first. Use meta.end_cursor as page[after] for the next page, or meta.start_cursor as page[before] for the
preceding page. Omit both cursors for the first page; if both are supplied, page[after] takes precedence. Responses
omit passwords and tokens.
tags:
- Pay Connectors
parameters:
- name: page[size]
in: query
description: Number of records per page.
schema:
type: integer
minimum: 1
maximum: 249
default: 25
- name: page[after]
in: query
description: Opaque cursor from meta.end_cursor.
schema:
type: string
- name: page[before]
in: query
description: Opaque cursor from meta.start_cursor.
schema:
type: string
- name: sort
in: query
description: Comma-separated created_at or updated_at fields, optionally prefixed with - for descending order.
schema:
type: string
default: -created_at
example: -created_at
- name: filter[name]
in: query
description: Exact match on name.
schema:
type: string
example: my-payment-connector
- name: filter[type]
in: query
description: Exact match on type.
schema:
type: string
example: generic
- name: filter[mode]
in: query
description: Exact match on mode.
schema:
type: string
example: test
- name: filter[created_at][eq]
in: query
description: Equal to this created_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[created_at][gt]
in: query
description: After this created_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[created_at][gte]
in: query
description: At or after this created_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[created_at][lt]
in: query
description: Before this created_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[created_at][lte]
in: query
description: At or before this created_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[updated_at][eq]
in: query
description: Equal to this updated_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[updated_at][gt]
in: query
description: After this updated_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[updated_at][gte]
in: query
description: At or after this updated_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[updated_at][lt]
in: query
description: Before this updated_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
- name: filter[updated_at][lte]
in: query
description: At or before this updated_at timestamp.
schema:
type: string
example: '2026-10-01T00:00:00Z'
responses:
'200':
description: Organization connectors and cursor metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorListResponse'
example:
data: []
meta:
page_size: 25
start_cursor: null
end_cursor: null
'422':
description: Invalid filter, sort or cursor parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorErrors'
example:
errors:
- code: '10000'
title: Invalid request
detail: Provided cursor is invalid.
source:
pointer: /after
post:
operationId: createPayConnector
summary: Create a Pay connector
description: Create a generic payment connector in the authenticated organization. The name must be unique in that organization.
Authentication supplies ownership; do not send user_id or organization_id. Config is encrypted at rest; passwords
and tokens are omitted from responses. This operation stores configuration and does not initiate a payment. See the
[processor contract](/docs/voice/programmable-voice/pay#request-sent-to-the-payment-processor).
tags:
- Pay Connectors
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGenericPayConnectorRequest'
examples:
none:
summary: None processor authentication
value:
name: my-payment-connector
type: generic
mode: test
config:
endpoint_url: https://processor.example.com/pay
auth_type: none
basic:
summary: Basic processor authentication
value:
name: my-payment-connector
type: generic
mode: test
config:
endpoint_url: https://processor.example.com/pay
auth_type: basic
username: merchant-example
password:
bearer:
summary: Bearer processor authentication
value:
name: my-payment-connector
type: generic
mode: test
config:
endpoint_url: https://processor.example.com/pay
auth_type: bearer
token:
responses:
'201':
description: Connector created. Credentials are omitted.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorResponse'
example:
data:
id: 550e8400-e29b-41d4-a716-446655440000
record_type: pay_connector
name: my-payment-connector
type: generic
mode: test
user_id: user-example
organization_id: organization-example
config:
endpoint_url: https://processor.example.com/pay
auth_type: bearer
created_at: '2026-10-01T12:00:00.000000Z'
updated_at: '2026-10-01T12:00:00.000000Z'
'422':
description: Invalid fields or duplicate name in the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorErrors'
example:
errors:
- code: '10000'
title: Invalid request
detail: The 'config' parameter is invalid. Please consult the documentation.
source:
pointer: /config
/pay_connectors/{name}:
delete:
operationId: deletePayConnector
summary: Delete a Pay connector
description: Delete a connector by name in the authenticated organization. Both test and live connectors can be deleted.
Returns no response body on success; a missing name or a connector in another organization returns 404.
tags:
- Pay Connectors
parameters:
- name: name
in: path
required: true
description: Connector name, not its UUID. URL-encode the name as a path segment.
schema:
type: string
example: my-payment-connector
responses:
'204':
description: Connector deleted. No response body.
'404':
description: Connector not found in the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorErrors'
example:
errors:
- detail: Resource not found
get:
operationId: getPayConnector
summary: Retrieve a Pay connector
description: Retrieve a connector by name within the authenticated organization. Password and token are omitted. A missing
name or a connector owned by another organization returns 404.
tags:
- Pay Connectors
parameters:
- name: name
in: path
required: true
description: Connector name, not its UUID. URL-encode the name as a path segment.
schema:
type: string
example: my-payment-connector
responses:
'200':
description: Connector details with credentials omitted.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorResponse'
example:
data:
id: 550e8400-e29b-41d4-a716-446655440000
record_type: pay_connector
name: my-payment-connector
type: generic
mode: test
user_id: user-example
organization_id: organization-example
config:
endpoint_url: https://processor.example.com/pay
auth_type: bearer
created_at: '2026-10-01T12:00:00.000000Z'
updated_at: '2026-10-01T12:00:00.000000Z'
'404':
description: Connector not found in the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorErrors'
example:
errors:
- detail: Resource not found
patch:
operationId: updatePayConnector
summary: Update a Pay connector
description: Update a generic connector by name in the authenticated organization. Both test and live connectors can
be updated through the API. Omitted fields remain unchanged. Supplying config replaces the entire config; it does
not merge keys. Include endpoint_url and the credentials required for the selected auth_type on every config replacement.
Omitting config preserves existing credentials, allowing a mode-only update. The path name cannot be renamed. Public
updates use PATCH.
tags:
- Pay Connectors
parameters:
- name: name
in: path
required: true
description: Connector name, not its UUID. URL-encode the name as a path segment.
schema:
type: string
example: my-payment-connector
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateGenericPayConnectorRequest'
examples:
modeOnly:
summary: Change mode without re-sending credentials
value:
mode: live
replaceConfig:
summary: Replace all config and re-send the bearer token
value:
config:
endpoint_url: https://processor.example.com/pay
auth_type: bearer
token:
timeout: 15000
responses:
'200':
description: Updated connector after the modeOnly example, with credentials omitted.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorResponse'
example:
data:
id: 550e8400-e29b-41d4-a716-446655440000
record_type: pay_connector
name: my-payment-connector
type: generic
mode: live
user_id: user-example
organization_id: organization-example
config:
endpoint_url: https://processor.example.com/pay
auth_type: bearer
created_at: '2026-10-01T12:00:00.000000Z'
updated_at: '2026-10-01T12:00:00.000000Z'
'404':
description: Connector not found in the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorErrors'
example:
errors:
- detail: Resource not found
'422':
description: Invalid fields or duplicate name in the organization.
content:
application/json:
schema:
$ref: '#/components/schemas/PayConnectorErrors'
example:
errors:
- code: '10000'
title: Invalid request
detail: The 'config' parameter is invalid. Please consult the documentation.
source:
pointer: /config
/payment/auto_recharge_prefs:
get:
description: Returns the payment auto recharge preferences.
summary: List auto recharge preferences
operationId: GetAutoRechargePrefs
tags:
- AutoRechargePreferences
x-endpoint-cost: medium
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/AutoRechargePref'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Resource not found
patch:
description: Update payment auto recharge preferences.
summary: Update auto recharge preferences
operationId: UpdateAutoRechargePrefs
tags:
- AutoRechargePreferences
x-endpoint-cost: medium
requestBody:
description: Details to update auto recharge preferences
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutoRechargePrefRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/AutoRechargePref'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
/phone_number_blocks/jobs:
get:
summary: Lists the phone number blocks jobs
operationId: ListPhoneNumberBlocksJobs
tags:
- Phone Number Blocks Background Jobs
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: sort
in: query
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
required: false
schema:
type: string
enum:
- created_at
example: created_at
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[status]'
schema:
type: object
properties:
type:
type: string
enum:
- delete_phone_number_block
example: delete_phone_number_block
description: Identifies the type of the background job.
status:
type: string
enum:
- pending
- in_progress
- completed
- failed
example: in_progress
description: Identifies the status of the background job.
responses:
'200':
description: Successful response with a list of phone number blocks background jobs.
content:
application/json:
schema:
type: object
title: List Phone Number Blocks Background Jobs Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberBlocksJob'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns background jobs that operate on phone-number blocks. Results can be filtered by job type and status,
sorted by creation time, and include pagination metadata.
/phone_number_blocks/jobs/delete_phone_number_block:
post:
x-latency-category: background
summary: Deletes all numbers associated with a phone number block
description: Creates a new background job to delete all the phone numbers associated with the given block. We will only
consider the phone number block as deleted after all phone numbers associated with it are removed, so multiple executions
of this job may be necessary in case some of the phone numbers present errors during the deletion process.
operationId: CreatePhoneNumberBlockDeletionJob
tags:
- Phone Number Blocks Background Jobs
x-group-parameters: 'true'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberBlocksJobDeletePhoneNumberBlockRequest'
responses:
'202':
description: Block deletion job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id}
with the job id until it completes.
content:
application/json:
schema:
type: object
title: Phone Number Blocks Job Delete Phone Number Block
properties:
data:
$ref: '#/components/schemas/PhoneNumberBlocksJob'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/phone_number_blocks/jobs/{id}:
get:
summary: Retrieves a phone number blocks job
operationId: GetPhoneNumberBlocksJob
tags:
- Phone Number Blocks Background Jobs
parameters:
- name: id
in: path
description: Identifies the Phone Number Blocks Job.
required: true
schema:
type: string
x-group-parameters: 'true'
responses:
'200':
description: Phone number blocks job details.
content:
application/json:
schema:
type: object
title: Phone Number Blocks Job
properties:
data:
$ref: '#/components/schemas/PhoneNumberBlocksJob'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the status and details of the phone-number-block background job identified by `id`.
/phone_numbers:
get:
summary: List phone numbers
operationId: ListPhoneNumbers
tags:
- Phone Number Configurations
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: sort
in: query
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
required: false
schema:
type: string
enum:
- purchased_at
- phone_number
- connection_name
- usage_payment_method
example: connection_name
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status],
filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method],
filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]'
schema:
type: object
properties:
tag:
type: string
description: Filter by phone number tags.
without_tags:
type: string
description: When set to 'true', filters for phone numbers that do not have any tags applied. All other values
are ignored.
enum:
- 'true'
- 'false'
phone_number:
type: string
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\
\ will result in no values being returned."
status:
type: string
enum:
- purchase-pending
- purchase-failed
- port-pending
- active
- deleted
- port-failed
- emergency-only
- ported-out
- port-out-pending
example: active
description: Filter by phone number status.
country_iso_alpha2:
oneOf:
- type: string
example: US
- type: array
items:
type: string
example:
- US
- CA
description: Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values.
connection_id:
type: string
example: '1521916448077776306'
description: Filter by connection_id.
voice.connection_name:
type: object
description: Filter by voice connection name pattern matching.
properties:
contains:
type: string
example: test
description: Filter contains connection name. Requires at least three characters.
starts_with:
type: string
example: test
description: Filter starts with connection name. Requires at least three characters.
ends_with:
type: string
example: test
description: Filter ends with connection name. Requires at least three characters.
eq:
type: string
example: test
description: Filter by connection name.
additionalProperties: false
voice.usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
example: channel
description: Filter by usage_payment_method.
billing_group_id:
type: string
example: 62e4bf2e-c278-4282-b524-488d9c9c43b2
description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that
have no billing group associated them, set the value of this filter to the string 'null'.
emergency_address_id:
type: string
example: '9102160989215728032'
description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers
that have no emergency address associated with them, set the value of this filter to the string 'null'.
customer_reference:
type: string
description: Filter numbers via the customer_reference set.
number_type:
type: object
description: Filter phone numbers by phone number type.
properties:
eq:
type: string
enum:
- local
- national
- toll_free
- mobile
- shared_cost
description: Filter phone numbers by phone number type.
additionalProperties: false
source:
type: string
enum:
- ported
- purchased
description: Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased'
for numbers bought directly from Telnyx.
- name: handle_messaging_profile_error
in: query
description: Although it is an infrequent occurrence, due to the highly distributed nature of the Telnyx platform,
it is possible that there will be an issue when loading in Messaging Profile information. As such, when this parameter
is set to `true` and an error in fetching this information occurs, messaging profile related fields will be omitted
in the response and an error message will be included instead of returning a 503 error.
schema:
type: string
enum:
- 'true'
- 'false'
example: 'false'
default: 'false'
responses:
'200':
description: Successful response with a list of phone numbers.
content:
application/json:
schema:
type: object
title: List Phone Numbers Response
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/numbers_PhoneNumberDetailed'
meta:
$ref: '#/components/schemas/PaginationMeta'
errors:
type: array
items:
$ref: '#/components/schemas/numbers_Error_73c9788e53'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns phone numbers associated with the account. Results support pagination, sorting, and filters for
number attributes, status, source, connections, billing groups, emergency addresses, tags, and customer references.
/phone_numbers/actions/verify_ownership:
post:
summary: Verify ownership of phone numbers
description: Verifies ownership of the provided phone numbers and returns a mapping of numbers to their IDs, plus a
list of numbers not found in the account.
operationId: VerifyPhoneNumberOwnership
tags:
- Phone Number Configurations
x-endpoint-cost: light
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberVerifyOwnershipRequest'
responses:
'200':
description: Phone number ownership verification completed.
content:
application/json:
schema:
type: object
title: Phone Number Verify Ownership Response
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumberVerifyOwnershipResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/phone_numbers/csv_downloads:
get:
summary: List CSV downloads
operationId: ListCsvDownloads
tags:
- CSV Downloads
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
responses:
'200':
description: Successful response with a list of CSV downloads.
content:
application/json:
schema:
type: object
title: List CSV Downloads Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/CsvDownload'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns CSV export jobs created for account phone numbers, including each export's current status and pagination
metadata.
post:
x-latency-category: background
summary: Create a CSV download
operationId: CreateCsvDownload
tags:
- CSV Downloads
parameters:
- name: csv_format
in: query
description: Which format to use when generating the CSV file. The default for backwards compatibility is 'V1'
required: false
schema:
type: string
enum:
- V1
- V2
example: V2
default: V1
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[has_bundle], filter[tag], filter[connection_id],
filter[phone_number], filter[status], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id],
filter[emergency_address_id], filter[customer_reference]'
schema:
type: object
properties:
has_bundle:
type: string
description: Filter by phone number that have bundles.
tag:
type: string
description: Filter by phone number tags.
connection_id:
type: string
example: '1521916448077776306'
description: Filter by connection_id.
phone_number:
type: string
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\
\ will result in no values being returned."
status:
type: string
enum:
- purchase-pending
- purchase-failed
- port-pending
- active
- deleted
- port-failed
- emergency-only
- ported-out
- port-out-pending
example: active
description: Filter by phone number status.
voice.connection_name:
type: object
description: Filter by voice connection name pattern matching.
properties:
contains:
type: string
example: test
description: Filter contains connection name. Requires at least three characters.
starts_with:
type: string
example: test
description: Filter starts with connection name. Requires at least three characters.
ends_with:
type: string
example: test
description: Filter ends with connection name. Requires at least three characters.
eq:
type: string
example: test
description: Filter by connection name.
additionalProperties: false
voice.usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
example: channel
description: Filter by usage_payment_method.
billing_group_id:
type: string
example: 62e4bf2e-c278-4282-b524-488d9c9c43b2
description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that
have no billing group associated them, set the value of this filter to the string 'null'.
emergency_address_id:
type: string
example: '9102160989215728032'
description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers
that have no emergency address associated with them, set the value of this filter to the string 'null'.
customer_reference:
type: string
description: Filter numbers via the customer_reference set.
- name: include_managed_accounts
in: query
description: When true, the CSV includes phone numbers from all managed accounts in addition to the requesting account's
own numbers. Only applies to V2 format; ignored for V1. The export appends `user_id` and `email` columns identifying
the account that owns each number. When a filter is provided, it applies to the combined set of numbers. Requires
access to managed accounts; requests without that access are rejected.
required: false
schema:
type: boolean
default: false
x-endpoint-cost: medium
responses:
'200':
description: Successful response with details about a CSV download.
content:
application/json:
schema:
type: object
title: CSV Download Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/CsvDownload'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Starts generation of a CSV export for phone numbers matching the supplied filters. The `csv_format` parameter
selects the output format, and the response contains the resulting download record.
/phone_numbers/csv_downloads/{id}:
get:
x-latency-category: background
summary: Retrieve a CSV download
operationId: GetCsvDownload
tags:
- CSV Downloads
x-endpoint-cost: medium
parameters:
- name: id
in: path
description: Identifies the CSV download.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a CSV download.
content:
application/json:
schema:
type: object
title: CSV Download Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/CsvDownload'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the current status and download details for the CSV export identified by `id`.
/phone_numbers/jobs:
get:
summary: Lists the phone numbers jobs
operationId: ListPhoneNumbersJobs
tags:
- Bulk Phone Number Operations
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: sort
in: query
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
required: false
schema:
type: string
enum:
- created_at
example: created_at
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[phone_number], filter[phone_number][],
filter[status][], filter[customer_reference]'
schema:
type: object
properties:
type:
type: string
enum:
- update_emergency_settings
- delete_phone_numbers
- update_phone_numbers
example: update_emergency_settings
description: Identifies the type of the background job.
customer_reference:
type: string
minLength: 1
maxLength: 250
example: yourcustomerrefhere
description: Exact, case-sensitive match for the customer reference supplied when the job was created. Only
jobs created within the last 90 days are returned, including for accounts otherwise exempt from job retention
limits. Searches the stored job reference, not the current reference on a phone number. Multiple jobs may
share a reference. Combines with the other filters and account ownership. Supply a single non-blank string
of up to 250 characters, without null characters, using `filter[customer_reference]=yourcustomerrefhere`.
Whitespace is preserved; blank strings, arrays, and objects return HTTP 422. An invalid filter value returns
HTTP 422. The literal string `null` is matched as text.
phone_number:
oneOf:
- type: string
example: +15551234567,1234567890123456789
description: One E.164 phone number or Telnyx Phone Number ID, or a comma-separated list of up to 10 values.
- type: array
minItems: 1
maxItems: 10
items:
type: string
minLength: 1
example:
- '+15551234567'
- '1234567890123456789'
description: Up to 10 E.164 phone numbers or Telnyx Phone Number IDs. Use repeated `filter[phone_number][]`
parameters.
description: Returns jobs that targeted any of the supplied account-owned phone numbers. Values beginning with
`+` must contain 1 to 20 digits after the plus sign. The 10-value limit is enforced before duplicate values
are removed. Unmatched or non-account-owned identifiers return an empty result. Phone-number filtering must
be enabled for the account.
status:
type: array
minItems: 1
items:
type: string
enum:
- pending
- in_progress
- completed
- failed
- expired
example:
- pending
- in_progress
description: Returns jobs with any of the supplied statuses. Use repeated `filter[status][]` parameters; scalar
and comma-separated status values are not accepted.
responses:
'200':
description: Successful response with a list of phone numbers background jobs.
content:
application/json:
schema:
type: object
title: List Phone Numbers Background Jobs Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/numbers_PhoneNumbersJob'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Invalid sorting value:
value:
errors:
- code: '10015'
title: Invalid sorting value
detail: The value provided for sorting is not valid. Check the value used and try again.
source:
pointer: /sort
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
Invalid page size:
value:
errors:
- code: '10015'
title: Invalid pagination
detail: The provided 'page' parameter is invalid. It must be an object with 'size' and/or 'number' with
numeric values.
source:
pointer: page/size
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
Invalid page number:
value:
errors:
- code: '10015'
title: Invalid pagination
detail: The provided 'page' parameter is invalid. It must be an object with 'size' and/or 'number' with
numeric values.
source:
pointer: page/number
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns background jobs that operate on phone numbers. Filter by job type, target phone numbers, job status,
or creation-time customer reference, and sort by creation time. Multiple phone-number or status values use OR semantics
within that filter; different filter categories use AND semantics. Results include pagination metadata.
/phone_numbers/jobs/delete_phone_numbers:
post:
x-latency-category: background
summary: Delete a batch of numbers
description: Creates a new background job to delete a batch of numbers. At most one thousand numbers can be updated
per API call.
operationId: CreateDeletePhoneNumbersJob
tags:
- Bulk Phone Number Operations
x-group-parameters: 'true'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumbersJobDeletePhoneNumbersRequest'
responses:
'202':
description: Deletion job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with
the job id until it completes.
content:
application/json:
schema:
type: object
title: Phone Numbers Job Delete Phone Numbers
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumbersJob'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'403':
$ref: '#/components/responses/numbers_ForbiddenResponse_73c9788e53'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Phone numbers must be present:
$ref: '#/components/examples/PhoneNumbersMustBePresent'
Maximum allowed phone numbers:
$ref: '#/components/examples/MaximumAllowedPhoneNumbers'
Minimum allowed phone numbers:
$ref: '#/components/examples/MinimumAllowedPhoneNumbers'
Mixed IDs and E164 values:
$ref: '#/components/examples/MixedIdsAndE164Values'
Phone number ownership:
$ref: '#/components/examples/PhoneNumberOwnership'
Maximum jobs allowed:
$ref: '#/components/examples/Maximum20JobsAllowed'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/phone_numbers/jobs/update_emergency_settings:
post:
x-latency-category: background
summary: Update the emergency settings from a batch of numbers
description: Creates a background job to update the emergency settings of a collection of phone numbers. At most one
thousand numbers can be updated per API call.
operationId: CreatePhoneNumbersJobUpdateEmergencySettings
tags:
- Bulk Phone Number Operations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumbersJobUpdateEmergencySettingsRequest'
responses:
'202':
description: Emergency settings job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id}
with the job id until it completes.
content:
application/json:
schema:
type: object
title: Phone Numbers Enable Emergency
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumbersJob'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'403':
$ref: '#/components/responses/numbers_ForbiddenResponse_73c9788e53'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Phone numbers must be present:
$ref: '#/components/examples/PhoneNumbersMustBePresent'
Maximum allowed phone numbers:
$ref: '#/components/examples/MaximumAllowedPhoneNumbers'
Minimum allowed phone numbers:
$ref: '#/components/examples/MinimumAllowedPhoneNumbers'
Mixed IDs and E164 values:
$ref: '#/components/examples/MixedIdsAndE164Values'
Phone number ownership:
$ref: '#/components/examples/PhoneNumberOwnership'
Maximum jobs allowed:
value:
errors:
- code: '10015'
title: Bad Request
detail: You can have at most 500 pending or in progress jobs
source:
pointer: /base
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/phone_numbers/jobs/update_phone_numbers:
post:
x-latency-category: background
summary: Update a batch of numbers
description: 'Creates a new background job to update a batch of numbers. At most one thousand numbers can be updated
per API call. At least one of the updateable fields must be submitted. IMPORTANT: You must either specify filters
(using the filter parameters) or specific phone numbers (using the phone_numbers parameter in the request body). If
you specify filters, ALL phone numbers that match the given filters (up to 1000 at a time) will be updated. If you
want to update only specific numbers, you must use the phone_numbers parameter in the request body. When using the
phone_numbers parameter, ensure you follow the correct format as shown in the example (either phone number IDs or
phone numbers in E164 format).'
operationId: CreateUpdatePhoneNumbersJob
tags:
- Bulk Phone Number Operations
x-group-parameters: 'true'
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[has_bundle], filter[tag], filter[connection_id],
filter[phone_number], filter[status], filter[voice.connection_name], filter[voice.usage_payment_method], filter[billing_group_id],
filter[emergency_address_id], filter[customer_reference]'
schema:
type: object
properties:
has_bundle:
type: string
description: Filter by phone number that have bundles.
tag:
type: string
description: Filter by phone number tags.
connection_id:
type: string
example: '1521916448077776306'
description: Filter by connection_id.
phone_number:
type: string
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\
\ will result in no values being returned."
status:
type: string
enum:
- purchase-pending
- purchase-failed
- port-pending
- active
- deleted
- port-failed
- emergency-only
- ported-out
- port-out-pending
example: active
description: Filter by phone number status.
voice.connection_name:
type: object
description: Filter by voice connection name pattern matching.
properties:
contains:
type: string
example: test
description: Filter contains connection name. Requires at least three characters.
starts_with:
type: string
example: test
description: Filter starts with connection name. Requires at least three characters.
ends_with:
type: string
example: test
description: Filter ends with connection name. Requires at least three characters.
eq:
type: string
example: test
description: Filter by connection name.
additionalProperties: false
voice.usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
example: channel
description: Filter by usage_payment_method.
billing_group_id:
type: string
example: 62e4bf2e-c278-4282-b524-488d9c9c43b2
description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that
have no billing group associated them, set the value of this filter to the string 'null'.
emergency_address_id:
type: string
example: '9102160989215728032'
description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers
that have no emergency address associated with them, set the value of this filter to the string 'null'.
customer_reference:
type: string
description: Filter numbers via the customer_reference set.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_PhoneNumbersJobUpdatePhoneNumbersRequest'
responses:
'202':
description: Update job accepted. The response contains a background job; poll GET /phone_numbers/jobs/{id} with
the job id until it completes.
content:
application/json:
schema:
type: object
title: Phone Numbers Job Update Phone Numbers
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumbersJob'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Not authorized:
$ref: '#/components/examples/NotAuthorized'
Billing group not authorized:
value:
errors:
- code: '10010'
title: Authorization Failed
detail: The specified billing group either does not exist or is not part of your account
source:
pointer: /billing_group_id
meta:
url: https://developers.telnyx.com/docs/overview/errors/10010
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Phone numbers must be present:
$ref: '#/components/examples/PhoneNumbersMustBePresent'
Maximum allowed phone numbers:
$ref: '#/components/examples/MaximumAllowedPhoneNumbers'
Minimum allowed phone numbers:
$ref: '#/components/examples/MinimumAllowedPhoneNumbers'
Mixed IDs and E164 values:
$ref: '#/components/examples/MixedIdsAndE164Values'
Phone number ownership:
$ref: '#/components/examples/PhoneNumberOwnership'
Minimum updateable field:
value:
errors:
- code: '10015'
title: Bad Request
detail: You must provide at least 1 updateable field.
source:
pointer: /updateable_fields
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
Maximum jobs allowed:
$ref: '#/components/examples/Maximum20JobsAllowed'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/phone_numbers/jobs/{id}:
get:
summary: Retrieve a phone numbers job
operationId: RetrievePhoneNumbersJob
tags:
- Bulk Phone Number Operations
parameters:
- name: id
in: path
description: Identifies the Phone Numbers Job.
required: true
schema:
type: string
x-group-parameters: 'true'
responses:
'200':
description: Phone numbers job details.
content:
application/json:
schema:
type: object
title: Phone Numbers Job
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumbersJob'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Resource not found:
value:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
source:
pointer: /base
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the status and details of the phone-number background job identified by `id`.
/phone_numbers/messaging:
get:
summary: List phone numbers with messaging settings
operationId: ListPhoneNumbersWithMessagingSettings
tags:
- Number Settings
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter[messaging_profile_id]
in: query
required: false
schema:
type: string
format: uuid
description: Filter by messaging profile ID.
- name: filter[phone_number]
in: query
required: false
schema:
type: string
description: Filter by exact phone number (supports comma-separated list).
- name: filter[phone_number][contains]
in: query
required: false
schema:
type: string
description: Filter by phone number substring.
- name: filter[type]
in: query
required: false
schema:
type: string
enum:
- tollfree
- longcode
- shortcode
description: Filter by phone number type.
- name: sort[phone_number]
in: query
required: false
schema:
type: string
enum:
- asc
- desc
description: Sort by phone number.
responses:
'200':
description: Successful response with a list of phone numbers with messaging settings.
content:
application/json:
schema:
type: object
title: List Messaging Settings Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns phone numbers with their current messaging product and messaging-profile assignments.
/phone_numbers/regulatory_requirements:
get:
summary: Retrieve regulatory requirements for a list of phone numbers
operationId: ListRegulatoryRequirementsPhoneNumbers
tags:
- Regulatory Requirements
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number]'
schema:
type: object
properties:
phone_number:
type: string
example: +41215470622,+41215470633
description: Record type phone number/ phone numbers
responses:
'200':
description: An array of Regulatory Requirements Responses
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RegulatoryRequirementsPhoneNumbers'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the regulatory requirements that apply to a list of phone numbers.
/phone_numbers/slim:
get:
summary: Slim List phone numbers
description: List phone numbers, This endpoint is a lighter version of the /phone_numbers endpoint having higher performance
and rate limit.
operationId: SlimListPhoneNumbers
tags:
- Phone Number Configurations
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: include_connection
in: query
description: Include the connection associated with the phone number.
required: false
schema:
type: boolean
default: false
- name: include_tags
in: query
description: Include the tags associated with the phone number.
required: false
schema:
type: boolean
default: false
- name: sort
in: query
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
required: false
schema:
type: string
enum:
- purchased_at
- phone_number
- connection_name
- usage_payment_method
example: connection_name
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[phone_number], filter[status],
filter[country_iso_alpha2], filter[connection_id], filter[voice.connection_name], filter[voice.usage_payment_method],
filter[billing_group_id], filter[emergency_address_id], filter[customer_reference], filter[number_type], filter[source]'
schema:
type: object
properties:
tag:
type: string
description: Filter by phone number tags. (This requires the include_tags param)
phone_number:
type: string
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\
\ will result in no values being returned."
status:
type: string
enum:
- purchase-pending
- purchase-failed
- port_pending
- active
- deleted
- port-failed
- emergency-only
- ported-out
- port-out-pending
example: active
description: Filter by phone number status.
country_iso_alpha2:
oneOf:
- type: string
example: US
- type: array
items:
type: string
example:
- US
- CA
description: Filter by phone number country ISO alpha-2 code. Can be a single value or an array of values.
connection_id:
type: string
example: '1521916448077776306'
description: Filter by connection_id.
voice.connection_name:
type: object
description: Filter by voice connection name pattern matching (requires include_connection param).
properties:
contains:
type: string
example: test
description: Filter contains connection name. Requires at least three characters and the include_connection
param.
starts_with:
type: string
example: test
description: Filter starts with connection name. Requires at least three characters and the include_connection
param.
ends_with:
type: string
example: test
description: Filter ends with connection name. Requires at least three characters and the include_connection
param.
eq:
type: string
example: test
description: Filter by connection name.
additionalProperties: false
voice.usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
example: channel
description: Filter by usage_payment_method.
billing_group_id:
type: string
example: 62e4bf2e-c278-4282-b524-488d9c9c43b2
description: Filter by the billing_group_id associated with phone numbers. To filter to only phone numbers that
have no billing group associated them, set the value of this filter to the string 'null'.
emergency_address_id:
type: string
example: '9102160989215728032'
description: Filter by the emergency_address_id associated with phone numbers. To filter only phone numbers
that have no emergency address associated with them, set the value of this filter to the string 'null'.
customer_reference:
type: string
description: Filter numbers via the customer_reference set.
number_type:
type: object
description: Filter phone numbers by phone number type.
properties:
eq:
type: string
enum:
- local
- national
- toll_free
- mobile
- shared_cost
description: Filter phone numbers by phone number type.
additionalProperties: false
source:
type: string
enum:
- ported
- purchased
description: Filter phone numbers by their source. Use 'ported' for numbers ported from other carriers, or 'purchased'
for numbers bought directly from Telnyx.
responses:
'200':
description: Successful response with a list of phone numbers.
content:
application/json:
schema:
type: object
title: List Phone Numbers Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/numbers_SlimPhoneNumberDetailed'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/phone_numbers/voice:
get:
summary: List phone numbers with voice settings
operationId: ListPhoneNumbersWithVoiceSettings
tags:
- Phone Number Configurations
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/numbers_PageConsolidated_73c9788e53'
- name: sort
in: query
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending order.
required: false
schema:
type: string
enum:
- purchased_at
- phone_number
- connection_name
- usage_payment_method
example: connection_name
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[connection_name],
filter[customer_reference], filter[voice.usage_payment_method]'
schema:
type: object
properties:
phone_number:
type: string
description: "Filter by phone number. Requires at least three digits.\n Non-numerical characters\
\ will result in no values being returned."
connection_name:
type: object
description: Filter by connection name pattern matching.
properties:
contains:
type: string
example: test
description: Filter contains connection name. Requires at least three characters.
additionalProperties: false
customer_reference:
type: string
description: Filter numbers via the customer_reference set.
voice.usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
example: channel
description: Filter by usage_payment_method.
responses:
'200':
description: Successful response with a list of phone numbers with voice settings.
content:
application/json:
schema:
type: object
title: List Phone Numbers With Voice Settings Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns account phone numbers together with their voice settings. Results support pagination, sorting,
and filters for number, connection name, customer reference, and voice usage payment method.
/phone_numbers/{id}:
delete:
summary: Delete a phone number
operationId: DeletePhoneNumber
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
responses:
'200':
description: Successful response with details about a phone number.
content:
application/json:
schema:
type: object
title: Phone Number Response
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumberDeletedDetailed'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Deletes the specified phone number from the account. The response contains the phone number's final deleted
representation.
get:
summary: Retrieve a phone number
operationId: RetrievePhoneNumber
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
responses:
'200':
description: Successful response with details about a phone number.
content:
application/json:
schema:
type: object
title: Phone Number Response
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumberDetailed'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the detailed configuration and current state of the phone number identified by `id`.
patch:
summary: Update a phone number
operationId: UpdatePhoneNumber
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
description: Updated settings for the phone number.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePhoneNumberRequest'
responses:
'200':
description: Successful response with details about a phone number.
content:
application/json:
schema:
type: object
title: Phone Number Response
properties:
data:
$ref: '#/components/schemas/numbers_PhoneNumberDetailed'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Updates the configurable settings of the specified phone number. The response contains the complete updated
phone-number representation.
/phone_numbers/{id}/actions/bundle_status_change:
patch:
summary: Change the bundle status for a phone number (set to being in a bundle or remove from a bundle)
operationId: PhoneNumberBundleStatusChange
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberBundleStatusChangeRequest'
responses:
'200':
description: Phone number bundle status change success
content:
application/json:
schema:
type: object
title: Phone Number Bundle Status Change
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Adds the specified phone number to a bundle or removes it from a bundle according to the requested status
change. The response contains the phone number with its updated bundle state.
/phone_numbers/{id}/actions/enable_emergency:
post:
summary: Enable emergency for a phone number
operationId: EnablePhoneNumberEmergency
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PhoneNumberEnableEmergencyRequest'
responses:
'200':
description: Phone number emergency enabled.
content:
application/json:
schema:
type: object
title: Phone Number Enable Emergency
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
'202':
description: Phone number emergency requested.
content:
application/json:
schema:
type: object
title: Phone Number Enable Emergency
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Associates emergency-service settings with the specified phone number. The operation returns the updated
phone-number configuration when completed immediately or an accepted state when processing continues asynchronously.
/phone_numbers/{id}/messaging:
get:
summary: Retrieve a phone number with messaging settings
operationId: GetPhoneNumberMessagingSettings
tags:
- Number Settings
parameters:
- name: id
in: path
description: Identifies the type of resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a phone number including messaging settings.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Settings Response
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the messaging product and messaging-profile assignment for the specified phone number.
patch:
summary: Update the messaging profile and/or messaging product of a phone number
operationId: UpdatePhoneNumberMessagingSettings
tags:
- Number Settings
parameters:
- name: id
in: path
description: The phone number to update.
required: true
schema:
type: string
requestBody:
description: 'The new configuration to set for this phone number.
To avoid modifying a value, either omit the field or set its value to `null`.'
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePhoneNumberMessagingSettingsRequest'
responses:
'200':
description: Successful response with details about a phone number including messaging settings.
content:
application/json:
schema:
type: object
title: Retrieve Messaging Settings Response
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithMessagingSettings'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the messaging product, messaging profile, or both for the specified phone number.
/phone_numbers/{id}/voice:
get:
summary: Retrieve a phone number with voice settings
operationId: GetPhoneNumberVoiceSettings
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
responses:
'200':
description: Successful response with details about a phone number including voice settings.
content:
application/json:
schema:
type: object
title: Retrieve Phone Number Voice Response
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the specified phone number together with its current voice configuration.
patch:
summary: Update a phone number with voice settings
operationId: UpdatePhoneNumberVoiceSettings
tags:
- Phone Number Configurations
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/IntId'
requestBody:
description: Updated voice settings for the phone number.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest'
responses:
'200':
description: Successful response with details about a phone number including voice settings.
content:
application/json:
schema:
type: object
title: Retrieve Phone Number Voice Response
properties:
data:
$ref: '#/components/schemas/PhoneNumberWithVoiceSettings'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Updates the voice configuration for the specified phone number. The response contains the phone number
with its updated voice settings.
/phone_numbers/{phone_number_id}/voicemail:
get:
description: Returns the voicemail settings for a phone number
summary: Get voicemail
operationId: GetVoicemail
tags:
- Voicemail
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VoicemailPrefResponse'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Resource not found
parameters:
- name: phone_number_id
in: path
description: The ID of the phone number.
example: '123455678900'
required: true
schema:
type: string
patch:
description: 'Update voicemail settings for a phone number. You can also configure a custom greeting by setting the
`greeting` object: use `mode` `custom_greeting` together with a `media_name` that points to an audio file uploaded
through the Media Storage API, or `mode` `default` to use the standard system greeting.'
summary: Update voicemail
operationId: UpdateVoicemail
tags:
- Voicemail
requestBody:
description: Details to update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoicemailRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VoicemailPrefResponse'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
post:
description: 'Create voicemail settings for a phone number. You can also configure a custom greeting by setting the
`greeting` object: use `mode` `custom_greeting` together with a `media_name` that points to an audio file uploaded
through the Media Storage API, or `mode` `default` to use the standard system greeting.'
summary: Create voicemail
operationId: CreateVoicemail
tags:
- Voicemail
requestBody:
description: Details to create
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoicemailRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VoicemailPrefResponse'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
/phone_numbers_regulatory_requirements:
get:
summary: Retrieve regulatory requirements for a list of phone numbers
operationId: ListRegulatoryRequirementsPhoneNumbers
tags:
- Regulatory Requirements
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number]'
schema:
type: object
properties:
phone_number:
type: string
example: +41215470622,+41215470633
description: Record type phone number/ phone numbers
responses:
'200':
description: An array of Regulatory Requirements Responses
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RegulatoryRequirementsPhoneNumbers'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the regulatory requirements that apply to the supplied comma-separated phone numbers. The response
includes the matching requirement records and pagination metadata.
/portability_checks:
post:
summary: Run a portability check
tags:
- Phone Number Porting
description: Runs a portability check, returning the results immediately.
operationId: PostPortabilityCheck
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
phone_numbers:
type: array
items:
type: string
description: The list of +E.164 formatted phone numbers to check for portability
example:
- '+13035550000'
- '+13035550001'
- '+13035550002'
responses:
'201':
description: PortabilityCheck Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortabilityCheckDetails'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting/events:
get:
summary: List all porting events
tags:
- Porting Orders
description: Returns a paginated list of porting-related events on your account, such as status changes on porting orders.
Supports filtering and is useful for auditing or reconciling webhook deliveries.
operationId: listPortingEvents
parameters:
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[type], filter[porting_order_id],
filter[created_at][gte], filter[created_at][lte]'
schema:
type: object
properties:
type:
type: string
enum:
- porting_order.deleted
- porting_order.loa_updated
- porting_order.messaging_changed
- porting_order.status_changed
- porting_order.sharing_token_expired
- porting_order.new_comment
- porting_order.split
example: porting_order.deleted
description: Filter by event type.
porting_order_id:
type: string
format: uuid
example: 34dc46a9-53ed-4e01-9454-26227ea13326
description: Filter by porting order ID.
created_at:
type: object
properties:
gte:
type: string
format: date-time
description: Filter by created at greater than or equal to.
example: '2021-01-01T00:00:00Z'
lte:
type: string
format: date-time
description: Filter by created at less than or equal to.
example: '2021-01-01T00:00:00Z'
description: Created at date range filtering operations
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingEvent'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check the 'detail' field in response for details.
'500':
description: Internal server error
/porting/events/{id}:
get:
summary: Show a porting event
tags:
- Porting Orders
description: Returns the details of a single porting event, including its type and payload.
operationId: showPortingEvent
parameters:
- name: id
description: Identifies the porting event.
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingEvent'
'404':
description: Not found
'500':
description: Internal server error
/porting/events/{id}/republish:
post:
summary: Republish a porting event
tags:
- Porting Orders
description: Republishes the specified porting event, triggering re-delivery of the corresponding webhook to your account.
operationId: republishPortingEvent
parameters:
- name: id
description: Identifies the porting event.
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No content
'404':
description: Not found
'500':
description: Internal server error
/porting/loa_configurations:
get:
tags:
- Porting Orders
summary: List LOA configurations
description: Returns a paginated list of your LOA (Letter of Authorization) configurations. LOA configurations customize
the company details and branding used on generated LOA documents.
operationId: ListLoaConfigurations
parameters:
- $ref: '#/components/parameters/porting-order_PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingLOAConfiguration'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
post:
tags:
- Porting Orders
summary: Create a LOA configuration
description: Creates a new LOA configuration with your company details and branding for use when generating LOA documents
for porting orders.
operationId: CreateLoaConfiguration
requestBody:
$ref: '#/components/requestBodies/CreatePortingLOAConfiguration'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingLOAConfiguration'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/porting/loa_configurations/preview:
post:
tags:
- Porting Orders
summary: Preview the LOA configuration parameters
description: Preview the LOA template that would be generated without need to create LOA configuration.
operationId: PreviewLoaConfigurationParams
requestBody:
$ref: '#/components/requestBodies/CreatePortingLOAConfiguration'
responses:
'200':
description: Successful response
content:
application/pdf:
schema:
type: string
format: binary
example: '%PDF-1.4...'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/porting/loa_configurations/{id}:
delete:
tags:
- Porting Orders
summary: Delete a LOA configuration
description: Permanently deletes the specified LOA configuration so it can no longer be used when generating LOA documents.
operationId: DeleteLoaConfiguration
parameters:
- name: id
description: Identifies a LOA configuration.
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No content
'404':
description: Resource not found
'500':
description: Internal server error
get:
tags:
- Porting Orders
summary: Retrieve a LOA configuration
description: Returns the details of a single LOA (Letter of Authorization) configuration by its identifier.
operationId: GetLoaConfiguration
parameters:
- name: id
description: Identifies a LOA configuration.
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingLOAConfiguration'
'404':
description: Resource not found
'500':
description: Internal server error
patch:
tags:
- Porting Orders
summary: Update a LOA configuration
description: Updates the specified LOA configuration with the provided fields and returns the updated configuration.
operationId: UpdateLoaConfiguration
parameters:
- name: id
description: Identifies a LOA configuration.
in: path
required: true
schema:
type: string
format: uuid
requestBody:
$ref: '#/components/requestBodies/CreatePortingLOAConfiguration'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingLOAConfiguration'
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/porting/loa_configurations/{id}/preview:
get:
tags:
- Porting Orders
summary: Preview a LOA configuration
description: Renders a preview of the LOA document produced by this configuration so you can verify company details
and branding before using it on porting orders.
operationId: PreviewLoaConfiguration
parameters:
- name: id
description: Identifies a LOA configuration.
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/pdf:
schema:
type: string
format: binary
example: '%PDF-1.4...'
'404':
description: Resource not found
'500':
description: Internal server error
/porting/reports:
get:
tags:
- Porting Orders
summary: List porting related reports
description: List the reports generated about porting operations.
operationId: ListPortingReports
parameters:
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]'
schema:
type: object
properties:
report_type:
type: string
enum:
- export_porting_orders_csv
example: export_porting_orders_csv
description: Filter reports of a specific type
status:
type: string
enum:
- pending
- completed
example: completed
description: Filter reports of a specific status
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingReport'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
post:
tags:
- Porting Orders
summary: Create a porting related report
description: Generate reports about porting operations.
operationId: CreatePortingReport
requestBody:
$ref: '#/components/requestBodies/CreatePortingReport'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingReport'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/porting/reports/{id}:
get:
tags:
- Porting Orders
summary: Retrieve a report
description: Returns the details of a previously requested porting report, including its status and parameters.
operationId: GetPortingReport
parameters:
- name: id
description: Identifies a report.
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingReport'
'404':
description: Resource not found
'500':
description: Internal server error
/porting/uk_carriers:
get:
summary: List available carriers in the UK
tags:
- Porting Orders
description: Returns the list of UK carriers available for porting, for use when preparing porting orders for UK numbers.
operationId: listPortingUKCarriers
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingUKCarrier'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/porting_orders:
get:
summary: List all porting orders
tags:
- Porting Orders
description: Returns a paginated list of your porting orders. Supports filtering and sorting, and can optionally include
the phone numbers attached to each order.
operationId: ListPortingOrders
parameters:
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- $ref: '#/components/parameters/QueryIncludePhoneNumbers'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference], filter[customer_group_reference],
filter[parent_support_key], filter[phone_numbers.country_code], filter[phone_numbers.carrier_name], filter[misc.type],
filter[end_user.admin.entity_name], filter[end_user.admin.auth_person_name], filter[activation_settings.fast_port_eligible],
filter[activation_settings.foc_datetime_requested][gt], filter[activation_settings.foc_datetime_requested][lt],
filter[phone_numbers.phone_number][contains]'
schema:
type: object
properties:
customer_reference:
type: string
description: Filter results by customer_reference
customer_group_reference:
type: string
description: Filter results by customer_group_reference
parent_support_key:
type: string
description: Filter results by parent_support_key
phone_numbers:
type: object
properties:
country_code:
type: string
description: Filter results by country ISO 3166-1 alpha-2 code
carrier_name:
type: string
description: Filter results by old service provider
phone_number:
type: object
properties:
contains:
type: string
description: Filter results by full or partial phone_number
description: Phone number pattern filtering operations
misc:
type: object
properties:
type:
$ref: '#/components/schemas/PortingOrderType'
description: Filter results by porting order type
end_user:
type: object
properties:
admin:
type: object
properties:
entity_name:
type: string
description: Filter results by person or company name
auth_person_name:
type: string
description: Filter results by authorized person
activation_settings:
type: object
properties:
fast_port_eligible:
type: boolean
description: Filter results by fast port eligible
foc_datetime_requested:
type: object
properties:
gt:
type: string
description: Filter results by foc date later than this value
example: '2021-03-25T10:00:00.000Z'
lt:
type: string
description: Filter results by foc date earlier than this value
example: '2021-03-25T10:00:00.000Z'
description: FOC datetime range filtering operations
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- created_at
- -created_at
- activation_settings.foc_datetime_requested
- -activation_settings.foc_datetime_requested
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order.
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrder'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create a porting order
tags:
- Porting Orders
description: Creates a new porting order to bring phone numbers from another carrier to Telnyx. Complete the order's
requirements and then confirm it to submit the port.
operationId: CreatePortingOrder
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePortingOrder'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrder'
example:
data:
- activation_settings:
activation_status: null
fast_port_eligible: true
foc_datetime_actual: null
foc_datetime_requested: null
created_at: '2022-03-17T18:01:01Z'
customer_reference: null
customer_group_reference: null
description: FP Telnyx
documents:
loa: null
invoice: null
end_user:
admin:
account_number: null
auth_person_name: null
billing_phone_number: null
business_identifier: null
entity_name: null
pin_passcode: null
tax_identifier: null
location:
administrative_area: null
country_code: null
extended_address: null
locality: null
postal_code: null
street_address: null
id: b0ea6d6f-de31-4079-a536-992e0c98b037
misc: null
old_service_provider_ocn: Unreal Communications
parent_support_key: null
phone_number_configuration:
billing_group_id: null
connection_id: null
emergency_address_id: null
messaging_profile_id: null
tags: []
phone_number_type: local
phone_numbers:
- activation_status: Activate RDY
phone_number: '{e.164 TN}'
phone_number_type: local
portability_status: confirmed
porting_order_id: b0ea6d6f-de31-4079-a536-992e0c98b037
porting_order_status: draft
record_type: porting_phone_number
requirements_status: requirement-info-pending
support_key: sr_10b316
porting_phone_numbers_count: 1
record_type: porting_order
requirements: []
requirements_met: false
status:
details: []
value: draft
support_key: null
updated_at: '2022-03-17T18:01:01Z'
user_feedback:
user_comment: null
user_rating: null
messaging:
messaging_capable: true
enable_messaging: false
messaging_port_status: not_applicable
messaging_port_completed: false
user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75
webhook_url: null
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/exception_types:
get:
summary: List all exception types
tags:
- Porting Orders
description: Returns a list of all possible exception types for a porting order.
operationId: ListExceptionTypes
parameters: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrdersExceptionType'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/phone_number_configurations:
get:
summary: List all phone number configurations
tags:
- Porting Orders
description: Returns a list of phone number configurations paginated.
operationId: ListPhoneNumberConfigurations
parameters:
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_order.status][in][], filter[porting_phone_number][in][],
filter[user_bundle_id][in][]'
schema:
type: object
properties:
porting_order:
type: object
properties:
status:
type: array
items:
type: string
example: in-process
enum:
- activation-in-progress
- cancel-pending
- cancelled
- draft
- exception
- foc-date-confirmed
- in-process
- ported
- submitted
description: Filter results by specific porting order statuses
porting_phone_number:
type: array
items:
type: string
format: uuid
example: 5d6f7ede-1961-4717-bfb5-db392c5efc2d
description: Filter results by a list of porting phone number IDs
user_bundle_id:
type: array
items:
type: string
format: uuid
example: 5d6f7ede-1961-4717-bfb5-db392c5efc2d
description: Filter results by a list of user bundle IDs
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- created_at
- -created_at
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order.
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingPhoneNumberConfiguration'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create a list of phone number configurations
tags:
- Porting Orders
description: Creates a list of phone number configurations.
operationId: CreatePhoneNumberConfigurations
requestBody:
$ref: '#/components/requestBodies/CreatePortingPhoneNumberConfigurations'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingPhoneNumberConfiguration'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}:
delete:
summary: Delete a porting order
tags:
- Porting Orders
description: Deletes an existing porting order. This operation is restrict to porting orders in draft state.
operationId: DeletePortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
responses:
'204':
description: No content
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
get:
summary: Retrieve a porting order
tags:
- Porting Orders
description: Retrieves the details of an existing porting order.
operationId: GetPortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/QueryIncludePhoneNumbers'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrder'
meta:
type: object
properties:
phone_numbers_url:
type: string
description: Link to list all phone numbers
example: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222
'401':
description: Unauthorized
patch:
summary: Edit a porting order
tags:
- Porting Orders
description: 'Edits the details of an existing porting order.
Any or all of a porting orders attributes may be included in the resource object included in a PATCH request.
If a request does not include all of the attributes for a resource, the system will interpret the missing attributes
as if they were included with their current values. To explicitly set something to null, it must be included in the
request with a null value.'
operationId: UpdatePortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePortingOrder'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrder'
meta:
type: object
properties:
phone_numbers_url:
type: string
description: Link to list all phone numbers
example:
data:
activation_settings:
activation_status: null
fast_port_eligible: true
foc_datetime_actual: null
foc_datetime_requested: '2022-04-08T15:00:00Z'
created_at: '2022-03-24T14:22:28Z'
customer_reference: Test1234
customer_group_reference: Group-789
description: FP Telnyx
documents:
loa: null
invoice: null
end_user:
admin:
account_number: 123abc
auth_person_name: Porter McPortersen II
billing_phone_number: '+13035551234'
business_identifier: abc123
entity_name: Porter McPortersen
pin_passcode: '1234'
tax_identifier: 1234abcd
location:
administrative_area: TX
country_code: US
extended_address: 14th Floor
locality: Austin
postal_code: '78701'
street_address: 600 Congress Avenue
id: eef10fb8-f3df-4c67-97c5-e18179723222
misc:
new_billing_phone_number: null
remaining_numbers_action: null
type: full
old_service_provider_ocn: Unreal Communications
parent_support_key: null
phone_number_configuration:
billing_group_id: null
connection_id: '1752379429071357070'
emergency_address_id: null
messaging_profile_id: null
tags: []
phone_number_type: local
porting_phone_numbers_count: 1
record_type: porting_order
requirements: []
requirements_met: false
status:
details: []
value: draft
support_key: null
updated_at: '2022-03-24T14:26:53Z'
user_feedback:
user_comment: null
user_rating: null
messaging:
messaging_capable: true
enable_messaging: true
messaging_port_status: pending
messaging_port_completed: false
user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75
webhook_url: https://example.com/porting_webhooks
meta:
phone_numbers_url: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/actions/activate:
post:
summary: Activate every number in a porting order asynchronously.
tags:
- Porting Orders
description: Activate each number in a porting order asynchronously. This operation is limited to US FastPort orders
only.
operationId: ActivatePortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
responses:
'202':
description: Activation request accepted. Track it via GET /porting_orders/{id}/activation_jobs/{activationJobId}
using the returned activation job id.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrdersActivationJob'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/actions/cancel:
post:
summary: Cancel a porting order
tags:
- Porting Orders
description: Requests cancellation of the porting order and returns the updated order.
operationId: CancelPortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrder'
meta:
type: object
properties:
phone_numbers_url:
type: string
description: Link to list all phone numbers
example:
data:
activation_settings:
activation_status: null
fast_port_eligible: true
foc_datetime_actual: null
foc_datetime_requested: '2022-04-08T15:00:00Z'
created_at: '2022-03-24T14:22:28Z'
customer_reference: Test1234
customer_group_reference: Group-789
description: FP Telnyx
documents:
loa: 3a5b98a0-5049-47c3-96e1-aa6c8d119117
invoice: 3a5b98a0-5049-47c3-96e1-aa6c8d119117
end_user:
admin:
account_number: 123abc
auth_person_name: Porter McPortersen II
billing_phone_number: '+13035551234'
business_identifier: abc123
entity_name: Porter McPortersen
pin_passcode: '1234'
tax_identifier: 1234abcd
location:
administrative_area: TX
country_code: US
extended_address: 14th Floor
locality: Austin
postal_code: '78701'
street_address: 600 Congress Avenue
id: eef10fb8-f3df-4c67-97c5-e18179723222
misc:
new_billing_phone_number: null
remaining_numbers_action: null
type: full
old_service_provider_ocn: Unreal Communications
parent_support_key: pr_4bec1a
phone_number_configuration:
billing_group_id: null
connection_id: '1752379429071357070'
emergency_address_id: null
messaging_profile_id: null
tags: []
phone_number_type: local
porting_phone_numbers_count: 1
record_type: porting_order
requirements: []
requirements_met: true
status:
details: []
value: cancel-pending
support_key: sr_10b316
updated_at: '2022-03-24T16:43:35Z'
user_feedback:
user_comment: null
user_rating: null
user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75
webhook_url: https://example.com/porting_webhooks
meta:
phone_numbers_url: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/actions/confirm:
post:
summary: Submit a porting order.
tags:
- Porting Orders
description: Confirms the porting order and submits it for processing. Make sure all required information and documents
are attached before confirming.
operationId: ConfirmPortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrder'
meta:
type: object
properties:
phone_numbers_url:
type: string
description: Link to list all phone numbers
example:
data:
activation_settings:
activation_status: null
fast_port_eligible: true
foc_datetime_actual: null
foc_datetime_requested: '2022-04-08T15:00:00Z'
created_at: '2022-03-24T14:22:28Z'
customer_reference: Test1234
customer_group_reference: Group-789
description: FP Telnyx
documents:
loa: 3a5b98a0-5049-47c3-96e1-aa6c8d119117
invoice: 3a5b98a0-5049-47c3-96e1-aa6c8d119117
end_user:
admin:
account_number: 123abc
auth_person_name: Porter McPortersen II
billing_phone_number: '+13035551234'
business_identifier: abc123
entity_name: Porter McPortersen
pin_passcode: '1234'
tax_identifier: 1234abcd
location:
administrative_area: TX
country_code: US
extended_address: 14th Floor
locality: Austin
postal_code: '78701'
street_address: 600 Congress Avenue
id: eef10fb8-f3df-4c67-97c5-e18179723222
misc:
new_billing_phone_number: null
remaining_numbers_action: null
type: full
old_service_provider_ocn: Unreal Communications
parent_support_key: pr_4bec1a
phone_number_configuration:
billing_group_id: null
connection_id: '1752379429071357070'
emergency_address_id: null
messaging_profile_id: null
tags: []
phone_number_type: local
porting_phone_numbers_count: 1
record_type: porting_order
requirements: []
requirements_met: true
status:
details: []
value: in-process
support_key: sr_10b316
updated_at: '2022-03-24T16:42:43Z'
user_feedback:
user_comment: null
user_rating: null
messaging:
messaging_capable: true
enable_messaging: false
messaging_port_status: not_applicable
messaging_port_completed: false
user_id: 40d68ba2-0847-4df2-be9c-b0e0cb673e75
webhook_url: https://example.com/porting_webhooks
meta:
phone_numbers_url: /v2/porting_phone_numbers?filter[porting_order_id]=eef10fb8-f3df-4c67-97c5-e18179723222
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/actions/share:
post:
summary: Share a porting order
tags:
- Porting Orders
description: Creates a sharing token for a porting order. The token can be used to share the porting order with non-Telnyx
users.
operationId: SharePortingOrder
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
requestBody:
$ref: '#/components/requestBodies/SharePortingOrder'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrderSharingToken'
example:
data:
id: 03a35311-ad92-46b3-95d7-8ad6dccf2d7c
porting_order_id: fd4b86c8-497d-4c6d-9609-a789e4e14cfe
expires_in_seconds: 3600
permissions:
- porting_order.document.read
- porting_order.document.update
token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4OTQ2NzcsImlzdCI6MTY4OTg5MTA3NywicGVybWlzc2lvbnMiOlsicG9ydGluZ19vcmRlci5kb2N1bWVudC5yZWFkIl0sInBvcnRpbmdfb3JkZXJfaWQiOiJmZDRiODZjOC00OTdkLTRjNmQtOTYwOS1hNzg5ZTRlMTRjZmUifQ.CT0HRF6OLj7VPZ8p5Y_0S8rOL8SEUznwJJkR-YReKwc
record_type: porting_order_sharing_token
expires_at: '2023-07-20T23:11:17Z'
created_at: '2023-07-20T22:11:17.292573Z'
'401':
description: Unauthorized
'404':
description: Porting Order not found
/porting_orders/{id}/activation_jobs:
get:
summary: List all porting activation jobs
tags:
- Porting Orders
description: Returns a list of your porting activation jobs.
operationId: ListPortingOrderActivationJobs
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/porting-order_PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrdersActivationJob'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/activation_jobs/{activationJobId}:
get:
summary: Retrieve a porting activation job
tags:
- Porting Orders
description: Returns the details of a single activation job for the porting order, including its current status.
operationId: GetPortingOrdersActivationJob
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/PathPortingOrdersActivationJobID'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrdersActivationJob'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
patch:
summary: Update a porting activation job
tags:
- Porting Orders
description: Updates the activation time of a porting activation job.
operationId: UpdatePortingOrdersActivationJob
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/PathPortingOrdersActivationJobID'
requestBody:
$ref: '#/components/requestBodies/UpdatePortingOrdersActivationJob'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrdersActivationJob'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/additional_documents:
get:
summary: List additional documents
tags:
- Porting Orders
description: Returns a list of additional documents for a porting order.
operationId: ListAdditionalDocuments
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[document_type]'
schema:
type: object
properties:
document_type:
type: array
items:
type: string
enum:
- loa
- invoice
- csr
- other
example: loa
description: Filter additional documents by a list of document types
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- created_at
- -created_at
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order.
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingAdditionalDocument'
meta:
$ref: '#/components/schemas/PaginationMeta'
example:
data:
- id: 2acd1061-33cb-49b8-8014-beb6dc3fedbf
document_id: 40bc547a-7f96-4cd5-926a-da4842671e88
document_type: loa
porting_order_id: 9d7b3b8e-4e67-4837-9c44-d110cd2c82a1
record_type: porting_additional_document
created_at: '2023-06-01T10:00:00.00000Z'
updated_at: '2023-06-01T10:00:00.00000Z'
meta:
total_pages: 1
total_results: 1
page_number: 1
page_size: 25
'401':
description: Unauthorized
'404':
description: Resource not found
post:
summary: Create a list of additional documents
tags:
- Porting Orders
description: Creates a list of additional documents for a porting order.
operationId: CreateAdditionalDocuments
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
requestBody:
$ref: '#/components/requestBodies/CreatePortingAdditionalDocuments'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingAdditionalDocument'
example:
data:
- id: 2acd1061-33cb-49b8-8014-beb6dc3fedbf
document_id: 40bc547a-7f96-4cd5-926a-da4842671e88
document_type: loa
porting_order_id: 9d7b3b8e-4e67-4837-9c44-d110cd2c82a1
record_type: porting_additional_document
created_at: '2023-06-01T10:00:00.00000Z'
updated_at: '2023-06-01T10:00:00.00000Z'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/additional_documents/{additional_document_id}:
delete:
summary: Delete an additional document
tags:
- Porting Orders
description: Deletes an additional document for a porting order.
operationId: DeleteAdditionalDocument
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- name: additional_document_id
description: Additional document identification.
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No content
'401':
description: Unauthorized
'404':
description: Resource not found
/porting_orders/{id}/allowed_foc_windows:
get:
summary: List allowed FOC dates
tags:
- Porting Orders
description: Returns a list of allowed FOC dates for a porting order.
operationId: ListAllowedFocWindows
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrdersAllowedFocWindow'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
/porting_orders/{id}/comments:
get:
summary: List all comments of a porting order
tags:
- Porting Orders
description: Returns a list of all comments of a porting order.
operationId: ListPortingOrderComments
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/porting-order_PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrdersComment'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create a comment for a porting order
tags:
- Porting Orders
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
description: Creates a new comment for a porting order.
operationId: CreatePortingOrderComment
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePortingOrderComment'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingOrdersComment'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/loa_template:
get:
summary: Download a porting order loa template
tags:
- Porting Orders
description: Downloads the Letter of Authorization (LOA) template document for this porting order, optionally rendered
with a specific LOA configuration.
operationId: GetPortingOrderLoaTemplate
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- name: loa_configuration_id
in: query
description: The identifier of the LOA configuration to use for the template. If not provided, the default LOA configuration
will be used.
example: a36c2277-446b-4d11-b4ea-322e02a5c08d
required: false
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/pdf:
schema:
type: string
format: binary
example: '%PDF-1.4...'
'401':
description: Unauthorized
/porting_orders/{id}/requirements:
get:
summary: List porting order requirements
tags:
- Porting Orders
description: Returns a list of all requirements based on country/number type for this porting order.
operationId: ListPortingOrderRequirements
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/porting-order_PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingOrderRequirementDetail'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/sub_request:
get:
summary: Retrieve the associated V1 sub_request_id and port_request_id
tags:
- Porting Orders
description: Retrieve the associated V1 sub_request_id and port_request_id
operationId: GetPortingOrderSubRequest
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/GetSubRequestByPortingOrder'
'401':
description: Unauthorized
'404':
description: Porting Order not found
/porting_orders/{id}/verification_codes:
get:
summary: List verification codes
tags:
- Porting Orders
description: Returns a list of verification codes for a porting order.
operationId: ListVerificationCodes
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[verified]'
schema:
type: object
properties:
verified:
type: boolean
example: true
description: Filter verification codes that have been verified or not
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- created_at
- -created_at
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order.
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingVerificationCode'
meta:
$ref: '#/components/schemas/PaginationMeta'
example:
data:
- id: 52090326-6533-4421-bcf4-bd0117cf3954
phone_number: '+61424000001'
verified: true
porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604
created_at: '2020-10-22T15:00:00.000Z'
updated_at: '2020-10-22T15:00:00.000Z'
- id: cf076b8e-645b-4040-8209-543c5909775f
phone_number: '+61424000002'
verified: false
porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604
created_at: '2020-10-22T15:00:00.000Z'
updated_at: '2020-10-22T15:00:00.000Z'
meta:
total_pages: 1
total_results: 2
page_number: 1
page_size: 2
'401':
description: Unauthorized
'404':
description: Resource not found
/porting_orders/{id}/verification_codes/send:
post:
summary: Send the verification codes
description: Send the verification code for all porting phone numbers.
tags:
- Porting Orders
operationId: SendPortingVerificationCodes
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
requestBody:
$ref: '#/components/requestBodies/SendPortingVerificationCodes'
responses:
'204':
description: No content
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{id}/verification_codes/verify:
post:
summary: Verify the verification code for a list of phone numbers
description: Verifies the verification code for a list of phone numbers.
tags:
- Porting Orders
operationId: VerifyPortingVerificationCodes
parameters:
- $ref: '#/components/parameters/PathPortingOrderID'
requestBody:
$ref: '#/components/requestBodies/VerifyPortingVerificationCodes'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingVerificationCode'
example:
data:
- id: 52090326-6533-4421-bcf4-bd0117cf3954
phone_number: '+61424000001'
verified: true
porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604
created_at: '2020-10-22T15:00:00.000Z'
updated_at: '2020-10-22T15:00:00.000Z'
- id: cf076b8e-645b-4040-8209-543c5909775f
phone_number: '+61424000002'
verified: false
porting_order_id: f28e6ecc-29a8-430b-bd0b-d93055f70604
created_at: '2020-10-22T15:00:00.000Z'
updated_at: '2020-10-22T15:00:00.000Z'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{porting_order_id}/action_requirements:
get:
summary: List action requirements for a porting order
tags:
- Porting Orders
description: Returns a list of action requirements for a specific porting order.
operationId: listPortingActionRequirements
parameters:
- name: porting_order_id
in: path
description: The ID of the porting order
required: true
schema:
type: string
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[id][in][], filter[requirement_type_id],
filter[action_type], filter[status]'
schema:
type: object
properties:
id:
type: array
items:
type: string
format: uuid
description: Filter action requirements by a list of IDs
requirement_type_id:
type: string
format: uuid
description: Filter action requirements by requirement type ID
action_type:
type: string
enum:
- au_id_verification
description: Filter action requirements by action type
status:
type: string
enum:
- created
- pending
- completed
- cancelled
- failed
description: Filter action requirements by status
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- created_at
- -created_at
- updated_at
- -updated_at
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order.
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingActionRequirement'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'404':
description: Porting order not found
'500':
description: Internal server error
/porting_orders/{porting_order_id}/action_requirements/{id}/initiate:
post:
summary: Initiate an action requirement
tags:
- Porting Orders
description: Initiates a specific action requirement for a porting order.
operationId: initiatePortingActionRequirement
parameters:
- name: porting_order_id
in: path
description: The ID of the porting order
required: true
schema:
type: string
- name: id
in: path
description: The ID of the action requirement
required: true
schema:
type: string
requestBody:
$ref: '#/components/requestBodies/InitiatePortingActionRequirement'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingActionRequirement'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Porting order or action requirement not found
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/porting_orders/{porting_order_id}/associated_phone_numbers:
get:
summary: List all associated phone numbers
tags:
- Porting Orders
description: Returns a list of all associated phone numbers for a porting order. Associated phone numbers are used for
partial porting in GB to specify which phone numbers should be kept or disconnected.
operationId: listPortingAssociatedPhoneNumbers
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone numbers
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[action]'
schema:
type: object
properties:
phone_number:
type: string
example: '+441234567890'
description: Filter results by a phone number. It should be in E.164 format.
action:
type: string
enum:
- keep
- disconnect
example: keep
description: Filter results by action type
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- -created_at
- created_at
example: -created_at
default: -created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingAssociatedPhoneNumber'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create an associated phone number
tags:
- Porting Orders
description: Creates a new associated phone number for a porting order. This is used for partial porting in GB to specify
which phone numbers should be kept or disconnected.
operationId: createPortingAssociatedPhoneNumber
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number
required: true
schema:
type: string
format: uuid
requestBody:
$ref: '#/components/requestBodies/CreatePortingAssociatedPhoneNumber'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingAssociatedPhoneNumber'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{porting_order_id}/associated_phone_numbers/{id}:
delete:
summary: Delete an associated phone number
tags:
- Porting Orders
description: Deletes an associated phone number from a porting order.
operationId: deletePortingAssociatedPhoneNumber
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number
required: true
schema:
type: string
format: uuid
- name: id
in: path
description: Identifies the associated phone number to be deleted
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingAssociatedPhoneNumber'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{porting_order_id}/phone_number_blocks:
get:
summary: List all phone number blocks
tags:
- Porting Orders
description: Returns a list of all phone number blocks of a porting order.
operationId: listPortingPhoneNumberBlocks
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number blocks
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/porting-order_FilterConsolidated'
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- -created_at
- created_at
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingPhoneNumberBlock'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create a phone number block
tags:
- Porting Orders
description: Creates a phone number block on the porting order, representing a contiguous range of phone numbers to
be ported together.
operationId: createPortingPhoneNumberBlock
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number block
required: true
schema:
type: string
format: uuid
requestBody:
$ref: '#/components/requestBodies/CreatePortingPhoneNumberBlock'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingPhoneNumberBlock'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{porting_order_id}/phone_number_blocks/{id}:
delete:
summary: Delete a phone number block
tags:
- Porting Orders
description: Deletes the specified phone number block from the porting order.
operationId: deletePortingPhoneNumberBlock
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number block
required: true
schema:
type: string
format: uuid
- name: id
in: path
description: Identifies the phone number block to be deleted
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingPhoneNumberBlock'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{porting_order_id}/phone_number_extensions:
get:
summary: List all phone number extensions
tags:
- Porting Orders
description: Returns a list of all phone number extensions of a porting order.
operationId: listPortingPhoneNumberExtensions
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number extensions
required: true
schema:
type: string
format: uuid
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_phone_number_id]'
schema:
type: object
properties:
porting_phone_number_id:
type: string
format: uuid
example: 04f8f1b9-310c-4a3c-963e-7dfc54765140
description: Filter results by porting phone number id
- name: sort
in: query
style: deepObject
explode: true
description: 'Consolidated sort parameter (deepObject style). Originally: sort[value]'
schema:
type: object
properties:
value:
type: string
enum:
- -created_at
- created_at
example: created_at
description: Specifies the sort order for results. If not given, results are sorted by created_at in descending
order
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingPhoneNumberExtension'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create a phone number extension
tags:
- Porting Orders
description: Creates a phone number extension on the porting order, mapping extension ranges to one of the order's phone
numbers.
operationId: createPortingPhoneNumberExtension
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number extension
required: true
schema:
type: string
format: uuid
requestBody:
$ref: '#/components/requestBodies/CreatePortingPhoneNumberExtension'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingPhoneNumberExtension'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_orders/{porting_order_id}/phone_number_extensions/{id}:
delete:
summary: Delete a phone number extension
tags:
- Porting Orders
description: Deletes the specified phone number extension from the porting order.
operationId: deletePortingPhoneNumberExtension
parameters:
- name: porting_order_id
in: path
description: Identifies the Porting Order associated with the phone number extension
required: true
schema:
type: string
format: uuid
- name: id
in: path
description: Identifies the phone number extension to be deleted
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortingPhoneNumberExtension'
'404':
description: Not found
'422':
description: Unprocessable entity. Check message field in response for details.
/porting_phone_numbers:
get:
summary: List all porting phone numbers
tags:
- Porting Orders
description: Returns a list of your porting phone numbers.
operationId: ListPortingPhoneNumbers
parameters:
- $ref: '#/components/parameters/porting-order_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_order_status]'
schema:
type: object
properties:
porting_order_status:
type: string
enum:
- draft
- in-process
- submitted
- exception
- foc-date-confirmed
- cancel-pending
- ported
- cancelled
example: in-process
description: Filter results by porting order status
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortingPhoneNumber'
meta:
$ref: '#/components/schemas/PaginationMeta'
text/csv:
schema:
type: string
example: "phone_number,phone_number_type,porting_order_id,support_key,porting_order_status\r\n+12003155566,local,5f940c35-ef28-4408-bb95-af73b047d589,sr_a12345,draft\r\
\n"
'401':
description: Unauthorized
'422':
description: Unprocessable entity. Check message field in response for details.
/portouts:
get:
summary: List portout requests
description: Returns the portout requests according to filters
operationId: ListPortoutRequest
tags:
- Number Portout
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[carrier_name], filter[country_code],
filter[country_code_in], filter[foc_date], filter[inserted_at], filter[phone_number], filter[pon], filter[ported_out_at],
filter[spid], filter[status], filter[status_in], filter[support_key]'
schema:
type: object
properties:
carrier_name:
type: string
description: Filter by new carrier name.
pon:
type: string
description: Filter by Port Order Number (PON).
spid:
type: string
description: Filter by new carrier spid.
status:
type: string
enum:
- pending
- authorized
- ported
- rejected
- rejected-pending
- canceled
description: Filter by portout status.
status_in:
type: array
items:
type: string
enum:
- pending
- authorized
- ported
- rejected
- rejected-pending
- canceled
description: Filter by a list of portout statuses
country_code:
type: string
description: Filter by 2-letter country code
example: US
country_code_in:
type: array
items:
type: string
example:
- CA
- US
description: Filter by a list of 2-letter country codes
ported_out_at:
type: object
description: Filter by ported_out_at date range using nested operations
properties:
gte:
type: string
format: date-time
example: '2024-09-04T00:00:00.000Z'
description: Filter by ported_out_at date greater than or equal.
lte:
type: string
format: date-time
example: '2024-09-04T00:00:00.000Z'
description: Filter by ported_out_at date less than or equal.
inserted_at:
type: object
description: Filter by inserted_at date range using nested operations
properties:
gte:
type: string
format: date-time
example: '2024-09-04T00:00:00.000Z'
description: Filter by inserted_at date greater than or equal.
lte:
type: string
format: date-time
example: '2024-09-04T00:00:00.000Z'
description: Filter by inserted_at date less than or equal.
foc_date:
type: string
format: date-time
example: '2024-09-04T00:00:00.000Z'
description: Filter by foc_date. Matches all portouts with the same date
phone_number:
type: string
example: '+13035551212'
description: Filter by a phone number on the portout. Matches all portouts with the phone number
support_key:
type: string
example: PO_abc123
description: Filter by the portout's support_key
responses:
'200':
description: Portout Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortoutDetails'
meta:
$ref: '#/components/schemas/Metadata'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/portouts/events:
get:
summary: List all port-out events
tags:
- Number Portout
description: Returns a paginated list of port-out events on your account, such as status changes on port-out requests,
with support for filtering.
operationId: listPortoutEvents
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[event_type], filter[portout_id],
filter[created_at]'
schema:
type: object
properties:
event_type:
type: string
enum:
- portout.status_changed
- portout.new_comment
- portout.foc_date_changed
example: portout.status_changed
description: Filter by event type.
portout_id:
type: string
format: uuid
example: 34dc46a9-53ed-4e01-9454-26227ea13326
description: Filter by port-out order ID.
created_at:
type: object
description: Filter by created_at date range using nested operations
properties:
gte:
type: string
format: date-time
example: '2021-01-01T00:00:00Z'
description: Filter by created at greater than or equal to.
lte:
type: string
format: date-time
example: '2021-01-01T00:00:00Z'
description: Filter by created at less than or equal to.
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortoutEvent'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/portouts/events/{id}:
get:
summary: Show a port-out event
tags:
- Number Portout
description: Returns the details of a single port-out event, including its type and payload.
operationId: showPortoutEvent
parameters:
- name: id
description: Identifies the port-out event.
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortoutEvent'
'404':
description: Not found
'500':
description: Internal server error
/portouts/events/{id}/republish:
post:
summary: Republish a port-out event
tags:
- Number Portout
description: Republishes the specified port-out event, triggering re-delivery of the corresponding webhook to your account.
operationId: republishPortoutEvent
parameters:
- name: id
description: Identifies the port-out event.
in: path
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No content
'404':
description: Not found
'500':
description: Internal server error
/portouts/rejections/{portout_id}:
get:
tags:
- Number Portout
summary: List eligible port-out rejection codes for a specific order
description: Given a port-out ID, list rejection codes that are eligible for that port-out
operationId: ListPortoutRejections
parameters:
- name: portout_id
description: Identifies a port out order.
in: path
required: true
schema:
type: string
example: 329d6658-8f93-405d-862f-648776e8afd7
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[code], filter[code][in]'
schema:
type: object
properties:
code:
oneOf:
- type: integer
example: 1002
description: Filter rejections of a specific code
- type: array
items:
type: integer
example:
- 1002
- 1003
description: Filter rejections in a list of codes
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortoutRejection'
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/portouts/reports:
get:
tags:
- Number Portout
summary: List port-out related reports
description: List the reports generated about port-out operations.
operationId: ListPortoutReports
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[report_type], filter[status]'
schema:
type: object
properties:
report_type:
type: string
enum:
- export_portouts_csv
example: export_portouts_csv
description: Filter reports of a specific type
status:
type: string
enum:
- pending
- completed
example: completed
description: Filter reports of a specific status
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortoutReport'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
post:
tags:
- Number Portout
summary: Create a port-out related report
description: Generate reports about port-out operations.
operationId: CreatePortoutReport
requestBody:
$ref: '#/components/requestBodies/CreatePortoutReport'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortoutReport'
'422':
description: Unprocessable entity. Check message field in response for details.
'500':
description: Internal server error
/portouts/reports/{id}:
get:
tags:
- Number Portout
summary: Retrieve a report
description: Returns the details of a previously requested port-out report, including its status and parameters.
operationId: GetPortoutReport
parameters:
- name: id
description: Identifies a report.
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortoutReport'
'404':
description: Resource not found
'500':
description: Internal server error
/portouts/{id}:
get:
summary: Get a portout request
description: Returns the portout request based on the ID provided
operationId: FindPortoutRequest
tags:
- Number Portout
parameters:
- name: id
in: path
description: Portout id
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Portout Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortoutDetails'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/portouts/{id}/comments:
get:
summary: List all comments for a portout request
description: Returns a list of comments for a portout request.
operationId: FindPortoutComments
tags:
- Number Portout
parameters:
- name: id
in: path
description: Portout id
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Portout Comments
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortoutComment'
meta:
$ref: '#/components/schemas/Metadata'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
post:
summary: Create a comment on a portout request
description: Creates a comment on the specified port-out request and returns the created comment.
operationId: PostPortRequestComment
tags:
- Number Portout
parameters:
- name: id
in: path
description: Portout id
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
body:
type: string
description: Comment to post on this portout request
example:
body: string
responses:
'201':
description: Portout Comment Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortoutComment'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/portouts/{id}/supporting_documents:
get:
summary: List supporting documents on a portout request
description: List every supporting documents for a portout request.
operationId: GetPortRequestSupportingDocuments
tags:
- Number Portout
parameters:
- name: id
in: path
description: Portout id
required: true
schema:
type: string
format: uuid
responses:
'201':
description: Portout Supporting Documents
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortOutSupportingDocument'
'401':
description: Unauthorized
'404':
description: Resource not found
post:
summary: Create a list of supporting documents on a portout request
description: Creates a list of supporting documents on a portout request.
operationId: PostPortRequestSupportingDocuments
tags:
- Number Portout
parameters:
- name: id
in: path
description: Portout id
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
documents:
type: array
description: List of supporting documents parameters
minItems: 1
maxItems: 10
items:
type: object
required:
- type
- document_id
properties:
type:
type: string
enum:
- loa
- invoice
description: Identifies the type of the document
example: loa
document_id:
format: uuid
type: string
description: Identifies the associated document
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
responses:
'201':
description: Portout Supporting Documents
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PortOutSupportingDocument'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/portouts/{id}/{status}:
patch:
summary: Update Status
description: Updates the status of the specified port-out request, using the status path segment to authorize or reject
the port-out.
operationId: UpdatePortoutStatus
tags:
- Number Portout
parameters:
- name: id
in: path
description: Portout id
required: true
schema:
type: string
format: uuid
- name: status
description: Updated portout status
in: path
required: true
schema:
type: string
enum:
- authorized
- rejected-pending
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- reason
properties:
reason:
description: Provide a reason if rejecting the port out request
type: string
example: I do not recognize this transaction
host_messaging:
description: Indicates whether messaging services should be maintained with Telnyx after the port out completes
type: boolean
default: false
example: false
responses:
'200':
description: Portout Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PortoutDetails'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Unprocessable entity. Check message field in response for details.
/pricing/products:
get:
summary: List products
description: Returns the full product catalog with pagination. Each entry contains a slug, display name, and description.
Use the slug to fetch per-product pricing via GET /pricing/products/{slug}.
operationId: listPricingProducts
tags:
- Pricing
parameters:
- name: page[number]
in: query
description: Page number (1-based).
required: false
schema:
type: integer
minimum: 1
title: Page Number
default: 1
- name: page[size]
in: query
description: Number of items per page (max 100).
required: false
schema:
type: integer
minimum: 1
maximum: 100
title: Page Size
default: 20
responses:
'200':
description: Product catalog listing
content:
application/json:
schema:
$ref: '#/components/schemas/PricingProductListResponse'
example:
data:
- slug: string
name: string
description: string
meta:
page_number: 0
page_size: 0
total_pages: 0
total_results: 0
'400':
description: Invalid pagination parameters
x-latency-category: responsive
security: []
/pricing/products/{slug}:
get:
summary: Get product pricing
description: 'Returns pricing entries for a single product. Most products return standard rate entries with fields like
rate, unit, country_iso, direction, and tiers. Inference products return model-specific fields (model, input_rate,
output_rate, cached_input_rate) with tiered pricing. Some products use rate decks (pricing_type: rate_deck) where
rates are determined dynamically.'
operationId: getProductPricing
tags:
- Pricing
parameters:
- name: slug
in: path
description: Product slug from the catalog listing.
required: true
schema:
type: string
- name: page[number]
in: query
description: Page number (1-based).
required: false
schema:
type: integer
minimum: 1
title: Page Number
default: 1
- name: page[size]
in: query
description: Number of items per page (max 100).
required: false
schema:
type: integer
minimum: 1
maximum: 100
title: Page Size
default: 20
- name: filter[country_iso]
description: Two-letter ISO 3166-1 alpha-2 country code (uppercase, e.g. US) to filter pricing to a single country.
in: query
required: false
schema:
anyOf:
- type: string
maxLength: 2
minLength: 2
pattern: ^[A-Z]{2}$
- type: 'null'
title: Filter[Country Iso]
responses:
'200':
description: Product pricing entries
content:
application/json:
schema:
$ref: '#/components/schemas/PricingEntryListResponse'
example:
data:
- name: string
rate: 0
unit: string
currency: string
type: string
tiers:
- min: 0
rate: 0
max: 1000000
model: string
input_rate: string
cached_input_rate: string
output_rate: string
input_tiers:
- min: 0
rate: 0
max: 1000000
cached_input_tiers:
- min: 0
rate: 0
max: 1000000
output_tiers:
- min: 0
rate: 0
max: 1000000
meta:
page_number: 0
page_size: 0
total_pages: 0
total_results: 0
'404':
description: Product not found
x-latency-category: responsive
security: []
/private_wireless_gateways:
get:
summary: Get all Private Wireless Gateways
description: Get all Private Wireless Gateways belonging to the user.
operationId: GetPrivateWirelessGateways
tags:
- Private Wireless Gateways
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- name: filter[name]
description: The name of the Private Wireless Gateway.
in: query
required: false
schema:
type: string
example: my private gateway
- name: filter[ip_range]
description: The IP address range of the Private Wireless Gateway.
in: query
required: false
schema:
type: string
example: 192.168.0.0/24
- name: filter[region_code]
description: The name of the region where the Private Wireless Gateway is deployed.
in: query
required: false
schema:
type: string
example: dc2
- name: filter[created_at]
description: Private Wireless Gateway resource creation date.
in: query
required: false
schema:
type: string
example: '2018-02-02T22:25:27.521Z'
- name: filter[updated_at]
description: When the Private Wireless Gateway was last updated.
in: query
required: false
schema:
type: string
example: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/wireless_PrivateWirelessGateway'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
post:
x-latency-category: background
summary: Create a Private Wireless Gateway
description: Asynchronously create a Private Wireless Gateway for SIM cards for a previously created network. This operation
may take several minutes so you can check the Private Wireless Gateway status at the section Get a Private Wireless
Gateway.
operationId: CreatePrivateWirelessGateway
tags:
- Private Wireless Gateways
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
network_id:
description: The identification of the related network resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
name:
description: The private wireless gateway name.
type: string
example: My private wireless gateway
region_code:
description: The code of the region where the private wireless gateway will be assigned. A list of available
regions can be found at the regions endpoint
type: string
example: dc2
address_mode:
description: Determines how IP addresses are assigned to SIM cards using this gateway. With static, each
SIM card gets a fixed IP address from the gateway's IP range that is preserved across sessions. With dynamic,
an IP address is assigned by the network at attach time and may change between sessions. If omitted, the
gateway is created with the default address mode, dynamic.
type: string
enum:
- static
- dynamic
default: dynamic
example: static
required:
- network_id
- name
responses:
'202':
description: Creation request accepted. Provisioning is asynchronous; poll GET /private_wireless_gateways/{id} with
the returned id to check status.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_PrivateWirelessGateway'
example:
data:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
network_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: private_wireless_gateway
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
name: My private wireless gateway
address_mode: dynamic
region_code: dc2
status:
value: provisioning
error_description: null
error_code: null
ip_range: 100.64.1.0/24
assigned_resources:
- record_type: sim_card_group
count: 1
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/private_wireless_gateways/{id}:
delete:
summary: Delete a Private Wireless Gateway
description: Permanently deletes the specified Private Wireless Gateway from your account.
operationId: DeleteWirelessGateway
tags:
- Private Wireless Gateways
parameters:
- $ref: '#/components/parameters/PrivateWirelessGatewayId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_PrivateWirelessGateway'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
get:
summary: Get a Private Wireless Gateway
description: Retrieve information about a Private Wireless Gateway.
operationId: GetPrivateWirelessGateway
tags:
- Private Wireless Gateways
parameters:
- $ref: '#/components/parameters/PrivateWirelessGatewayId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_PrivateWirelessGateway'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/pronunciation_dicts:
get:
summary: List pronunciation dictionaries
description: List all pronunciation dictionaries for the authenticated organization. Results are paginated using offset-based
pagination.
operationId: ListPronunciationDicts
tags:
- Pronunciation Dictionaries
parameters:
- name: page[number]
in: query
required: false
description: Page number (1-based). Defaults to 1.
schema:
type: integer
minimum: 1
default: 1
- name: page[size]
in: query
required: false
description: Number of results per page. Defaults to 20, maximum 250.
schema:
type: integer
minimum: 1
maximum: 250
default: 20
responses:
'200':
description: A paginated list of pronunciation dictionaries.
content:
application/json:
schema:
$ref: '#/components/schemas/PronunciationDictListResponse'
'400':
description: Invalid pagination parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
'401':
description: Unauthorized. Invalid or missing API key.
post:
summary: Create a pronunciation dictionary
description: 'Create a new pronunciation dictionary for the authenticated organization. Each dictionary contains a list
of items that control how specific words are spoken. Items can be alias type (text replacement) or phoneme type (IPA
pronunciation notation).
As an alternative to providing items directly as JSON, you can upload a dictionary file (PLS/XML or plain text format,
max 1MB) using multipart/form-data. PLS files use the standard W3C Pronunciation Lexicon Specification XML format.
Text files use a line-based format: `word=alias` for aliases, `word:/phoneme/` for IPA phonemes.
Limits:
- Maximum 50 dictionaries per organization
- Maximum 100 items per dictionary
- Text: max 200 characters
- Alias/phoneme value: max 500 characters
- File upload: max 1MB (1,048,576 bytes)'
operationId: CreatePronunciationDict
tags:
- Pronunciation Dictionaries
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePronunciationDictRequest'
multipart/form-data:
schema:
type: object
required:
- name
- file
properties:
name:
type: string
description: Human-readable name. Must be unique within the organization.
minLength: 1
maxLength: 255
example: Brand Names
file:
type: string
format: binary
description: 'Dictionary file to upload. Supported formats: PLS/XML (.pls, .xml) and plain text (.txt).
Max size: 1MB (1,048,576 bytes).'
responses:
'201':
description: Pronunciation dictionary created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/PronunciationDictResponse'
'401':
description: Unauthorized. Invalid or missing API key.
'422':
description: Validation error or organization limit exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
examples:
validation_error:
summary: Validation failed
value:
errors:
- code: '90202'
title: Validation failed
detail: items must have at least one item
source:
pointer: /items
limit_exceeded:
summary: Organization limit exceeded
value:
errors:
- code: '90203'
title: Limit exceeded
detail: Maximum number of pronunciation dictionaries (50) reached
source:
pointer: /
duplicate_name:
summary: Duplicate dictionary name
value:
errors:
- code: '90202'
title: Validation failed
detail: organization_id, name a dictionary with this name already exists
source:
pointer: /organization_id, name
/pronunciation_dicts/{id}:
delete:
summary: Delete a pronunciation dictionary
description: Permanently delete a pronunciation dictionary.
operationId: DeletePronunciationDict
tags:
- Pronunciation Dictionaries
parameters:
- $ref: '#/components/parameters/pronunciation_dict_id'
responses:
'204':
description: Dictionary deleted successfully. No content returned.
'401':
description: Unauthorized. Invalid or missing API key.
'404':
description: Pronunciation dictionary not found.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
get:
summary: Get a pronunciation dictionary
description: Retrieve a single pronunciation dictionary by ID.
operationId: GetPronunciationDict
tags:
- Pronunciation Dictionaries
parameters:
- $ref: '#/components/parameters/pronunciation_dict_id'
responses:
'200':
description: The requested pronunciation dictionary.
content:
application/json:
schema:
$ref: '#/components/schemas/PronunciationDictResponse'
'401':
description: Unauthorized. Invalid or missing API key.
'404':
description: Pronunciation dictionary not found.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
example:
errors:
- code: '90201'
title: Pronunciation dictionary not found
detail: The requested pronunciation dictionary does not exist
patch:
summary: Update a pronunciation dictionary
description: Update the name and/or items of an existing pronunciation dictionary. Uses optimistic locking — if the
dictionary was modified concurrently, the request returns 409 Conflict.
operationId: UpdatePronunciationDict
tags:
- Pronunciation Dictionaries
parameters:
- $ref: '#/components/parameters/pronunciation_dict_id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePronunciationDictRequest'
responses:
'200':
description: Pronunciation dictionary updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/PronunciationDictResponse'
'401':
description: Unauthorized. Invalid or missing API key.
'404':
description: Pronunciation dictionary not found.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
'409':
description: Conflict. The dictionary was modified concurrently. Re-fetch and retry.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
example:
errors:
- code: '90200'
title: Pronunciation dictionary error
detail: Dictionary was modified concurrently, please retry
'422':
description: Validation error.
content:
application/json:
schema:
$ref: '#/components/schemas/pronunciation-dicts_ErrorResponse'
/public_internet_gateways:
get:
summary: List all Public Internet Gateways
description: Returns a paginated list of the public internet gateways on your account, with support for filtering.
operationId: ListPublicInternetGateways
tags:
- Public Internet Gateways
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]'
schema:
type: object
properties:
network_id:
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
description: The associated network id to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PublicInternetGatewayRead'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a Public Internet Gateway
description: Requests creation of a public internet gateway on the specified network, giving the network internet egress.
Creation is asynchronous, so the request is accepted and completes in the background.
operationId: CreatePublicInternetGateway
tags:
- Public Internet Gateways
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublicInternetGatewayCreate'
required: true
responses:
'202':
description: Creation request accepted. Provisioning is asynchronous; poll GET /public_internet_gateways/{id} with
the returned id to check status.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PublicInternetGatewayRead'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/public_internet_gateways/{id}:
delete:
summary: Delete a Public Internet Gateway
description: Deletes the specified public internet gateway, removing internet egress through it.
operationId: DeletePublicInternetGateway
tags:
- Public Internet Gateways
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PublicInternetGatewayRead'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Retrieve a Public Internet Gateway
description: Returns the details of a single public internet gateway by its identifier.
operationId: GetPublicInternetGateway
tags:
- Public Internet Gateways
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/PublicInternetGatewayRead'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/queues:
get:
summary: List queues
description: List all queues for the authenticated user.
operationId: ListQueues
tags:
- Queue Commands
parameters:
- name: page[number]
in: query
description: The page number to load
required: false
schema:
type: integer
minimum: 1
default: 1
- name: page[size]
in: query
description: The size of the page
required: false
schema:
type: integer
minimum: 1
maximum: 250
default: 20
responses:
'200':
description: Successful response with a list of queues.
content:
application/json:
schema:
type: object
title: List Queues Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/Queue'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
post:
summary: Create a queue
description: Creates a new call queue with the provided configuration and returns the created queue.
operationId: CreateQueue
tags:
- Queue Commands
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateQueueRequest'
responses:
'200':
description: Successful response with details about a queue.
content:
application/json:
schema:
type: object
title: Queue Response
properties:
data:
$ref: '#/components/schemas/Queue'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
/queues/{queue_name}:
delete:
summary: Delete a queue
description: Permanently deletes the specified call queue from your account.
operationId: DeleteQueue
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
responses:
'204':
description: Queue deleted successfully.
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
get:
summary: Retrieve a call queue
description: Returns the details of an existing call queue, including its current configuration.
operationId: RetrieveCallQueue
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a queue.
content:
application/json:
schema:
type: object
title: Queue Response
properties:
data:
$ref: '#/components/schemas/Queue'
'404':
$ref: '#/components/responses/NotFoundResponse'
post:
summary: Update a queue
description: Update properties of an existing call queue.
operationId: UpdateQueue
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateQueueRequest'
responses:
'200':
description: Successful response with details about a queue.
content:
application/json:
schema:
type: object
title: Queue Response
properties:
data:
$ref: '#/components/schemas/Queue'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'422':
$ref: '#/components/responses/UnprocessableEntityResponse'
/queues/{queue_name}/calls:
get:
summary: Retrieve calls from a queue
description: Retrieve the list of calls in an existing queue
operationId: ListQueueCalls
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/call-control_PageConsolidated'
responses:
'200':
description: Successful response with a list of calls in a queue.
content:
application/json:
schema:
type: object
title: List Queue Calls Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/QueueCall'
meta:
$ref: '#/components/schemas/PaginationMeta'
'404':
$ref: '#/components/responses/NotFoundResponse'
/queues/{queue_name}/calls/{call_control_id}:
delete:
summary: Force remove a call from a queue
description: Removes an inactive call from a queue. If the call is no longer active, use this command to remove it from
the queue.
operationId: RemoveQueueCall
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/CallControlId'
responses:
'204':
description: Call successfully removed from the queue
'404':
$ref: '#/components/responses/NotFoundResponse'
get:
summary: Retrieve a call from a queue
description: Retrieve an existing call from an existing queue
operationId: RetrieveCallFromQueue
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/CallControlId'
responses:
'200':
description: Successful response with details about a call in a queue.
content:
application/json:
schema:
type: object
title: Queue Call Response
properties:
data:
$ref: '#/components/schemas/QueueCall'
'404':
$ref: '#/components/responses/NotFoundResponse'
patch:
summary: Update queued call
description: Update queued call's keep_after_hangup flag
operationId: UpdateCallInQueue
tags:
- Queue Commands
parameters:
- name: queue_name
description: Uniquely identifies the queue by name
in: path
required: true
schema:
type: string
- $ref: '#/components/parameters/CallControlId'
requestBody:
description: Update queued call request.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateQueuedCallRequest'
responses:
'204':
description: Call has been successfully updated.
'404':
$ref: '#/components/responses/NotFoundResponse'
/rcs/agents:
get:
tags:
- RCS Agents
summary: List RCS agents
description: Lists RCS agents owned by the authenticated organization, optionally filtered by brand.
operationId: ListRcsAgents
parameters:
- name: brand_id
in: query
required: false
description: Only return agents belonging to this brand.
schema:
type: string
format: uuid
responses:
'200':
description: RCS agents owned by the organization.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AgentResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'422':
$ref: '#/components/responses/ValidationError'
post:
tags:
- RCS Agents
summary: Create an RCS agent
description: Creates an editable RCS agent draft under a brand. The `Idempotency-Key` is scoped to the authenticated
organization. Reusing the key with the same request returns the original agent, while reusing it with a different
request returns a conflict.
operationId: CreateRcsAgent
parameters:
- $ref: '#/components/parameters/rcs-registration_IdempotencyKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AgentCreateRequest'
responses:
'201':
description: The agent draft was created or replayed from the idempotency record.
headers:
Idempotent-Replayed:
description: Present with value `true` when a successful response was replayed for the supplied idempotency
key.
schema:
type: boolean
content:
application/json:
schema:
$ref: '#/components/schemas/AgentResponse'
'400':
$ref: '#/components/responses/rcs-registration_BadRequest'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
'422':
$ref: '#/components/responses/ValidationError'
'503':
$ref: '#/components/responses/DependencyUnavailable'
/rcs/agents/{id}:
get:
tags:
- RCS Agents
summary: Retrieve an RCS agent
description: Retrieves an RCS agent, section statuses, test devices, carrier approvals, and provider capabilities.
operationId: RetrieveRcsAgent
parameters:
- $ref: '#/components/parameters/AgentId'
responses:
'200':
description: The requested RCS agent.
content:
application/json:
schema:
$ref: '#/components/schemas/AgentResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
patch:
tags:
- RCS Agents
summary: Update an RCS agent
description: Updates one or more fields on an agent while its status is `CREATED`. Submitted agents cannot be changed
through this endpoint.
operationId: UpdateRcsAgent
parameters:
- $ref: '#/components/parameters/AgentId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AgentUpdateRequest'
responses:
'200':
description: The updated RCS agent.
content:
application/json:
schema:
$ref: '#/components/schemas/AgentResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
'422':
$ref: '#/components/responses/ValidationError'
'503':
$ref: '#/components/responses/DependencyUnavailable'
/rcs/agents/{id}/carrier_approvals:
get:
tags:
- RCS Agents
summary: List RCS agent carrier approvals
description: Lists carrier approval records for an RCS agent. The provider may expose per-carrier, hub-level, or bot-level
approval status.
operationId: ListRcsAgentCarrierApprovals
parameters:
- $ref: '#/components/parameters/AgentId'
responses:
'200':
description: Carrier approval records for the agent.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CarrierApprovalResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
/rcs/agents/{id}/launch:
post:
tags:
- RCS Agents
summary: Submit an RCS agent for launch
description: Adds the campaign and testing configuration, then starts asynchronous carrier launch. Agent basics must
already be submitted. Repeating a launch that is already in progress returns the current agent without creating new
work.
operationId: LaunchRcsAgent
parameters:
- $ref: '#/components/parameters/AgentId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AgentLaunchRequest'
responses:
'202':
description: The launch submission was accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/AgentResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
'422':
$ref: '#/components/responses/ValidationError'
/rcs/agents/{id}/submit:
post:
tags:
- RCS Agents
summary: Submit RCS agent basics
description: Starts asynchronous provider provisioning and submits the agent's basic configuration. The brand must be
`VERIFIED`. Repeating this request for an in-progress agent returns its current state without creating new work.
operationId: SubmitRcsAgent
parameters:
- $ref: '#/components/parameters/AgentId'
responses:
'202':
description: The basic agent submission was accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/AgentResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
/rcs/agents/{id}/test_devices:
get:
tags:
- RCS Agents
summary: List RCS agent test devices
description: Lists test devices attached to an RCS agent.
operationId: ListRcsAgentTestDevices
parameters:
- $ref: '#/components/parameters/AgentId'
responses:
'200':
description: Test devices attached to the agent.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestDeviceResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
post:
tags:
- RCS Agents
summary: Add an RCS agent test device
description: Adds an RCS-capable test number after provider agent creation. Repeating the request for a number already
attached to the agent returns the existing test device.
operationId: AddRcsAgentTestDevice
parameters:
- $ref: '#/components/parameters/AgentId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestDeviceCreateRequest'
responses:
'201':
description: The test device was added or already existed.
content:
application/json:
schema:
$ref: '#/components/schemas/TestDeviceResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
'422':
$ref: '#/components/responses/ValidationError'
'502':
$ref: '#/components/responses/ProviderError'
/rcs/agents/{id}/test_devices/{test_device_id}:
delete:
tags:
- RCS Agents
summary: Remove an RCS agent test device
description: Removes a test device from an RCS agent and its provider registration.
operationId: RemoveRcsAgentTestDevice
parameters:
- $ref: '#/components/parameters/AgentId'
- $ref: '#/components/parameters/TestDeviceId'
responses:
'204':
description: The test device was removed.
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'502':
$ref: '#/components/responses/ProviderError'
/rcs/brands:
get:
tags:
- RCS Brands
summary: List RCS brands
description: Lists RCS brands owned by the authenticated organization.
operationId: ListRcsBrands
responses:
'200':
description: RCS brands owned by the organization.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BrandResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
post:
tags:
- RCS Brands
summary: Create an RCS brand
description: Creates an editable RCS brand draft. Creating the draft does not begin external review.
operationId: CreateRcsBrand
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BrandCreateRequest'
responses:
'201':
description: The brand draft was created.
content:
application/json:
schema:
$ref: '#/components/schemas/BrandResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
'422':
$ref: '#/components/responses/ValidationError'
'503':
$ref: '#/components/responses/DependencyUnavailable'
/rcs/brands/{id}:
get:
tags:
- RCS Brands
summary: Retrieve an RCS brand
description: Retrieves an RCS brand and its current lifecycle status.
operationId: RetrieveRcsBrand
parameters:
- $ref: '#/components/parameters/BrandId'
responses:
'200':
description: The requested RCS brand.
content:
application/json:
schema:
$ref: '#/components/schemas/BrandResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
patch:
tags:
- RCS Brands
summary: Update an RCS brand
description: Updates one or more fields on a brand while its status is `CREATED`. Submitted brands cannot be changed.
operationId: UpdateRcsBrand
parameters:
- $ref: '#/components/parameters/BrandId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BrandUpdateRequest'
responses:
'200':
description: The updated RCS brand.
content:
application/json:
schema:
$ref: '#/components/schemas/BrandResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
'422':
$ref: '#/components/responses/ValidationError'
'503':
$ref: '#/components/responses/DependencyUnavailable'
/rcs/brands/{id}/submit:
post:
tags:
- RCS Brands
summary: Submit an RCS brand
description: Starts asynchronous provider provisioning and external review for a brand. Repeating this request for an
in-progress brand returns its current state without creating new work.
operationId: SubmitRcsBrand
parameters:
- $ref: '#/components/parameters/BrandId'
responses:
'202':
description: The brand submission was accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/BrandResponse'
'401':
$ref: '#/components/responses/rcs-registration_Unauthorized'
'404':
$ref: '#/components/responses/rcs-registration_NotFound'
'409':
$ref: '#/components/responses/rcs-registration_Conflict'
/recording_transcriptions:
get:
summary: List all recording transcriptions
description: Returns a list of your recording transcriptions.
operationId: getRecordingTranscriptions
tags:
- Call Recordings
parameters:
- $ref: '#/components/parameters/call-recordings_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: Filter recording transcriptions by various attributes.
schema:
type: object
properties:
recording_id:
type: string
format: uuid
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: If present, transcriptions will be filtered to those associated with the given recording.
created_at:
type: object
additionalProperties: false
properties:
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only transcriptions created later than or at given ISO 8601 datetime.
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only transcriptions created earlier than or at given ISO 8601 datetime.
responses:
'200':
description: A response listing multiple recording transcriptions.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RecordingTranscription'
meta:
$ref: '#/components/schemas/call-recordings_CursorPaginationMeta'
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
/recording_transcriptions/{recording_transcription_id}:
delete:
summary: Delete a recording transcription
description: Permanently deletes a recording transcription.
operationId: deleteRecordingTranscription
tags:
- Call Recordings
parameters:
- $ref: '#/components/parameters/RecordingTranscriptionId'
responses:
'200':
description: A response with a single recording transcription resource.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RecordingTranscription'
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
get:
summary: Retrieve a recording transcription
description: Retrieves the details of an existing recording transcription.
operationId: getRecordingTranscription
tags:
- Call Recordings
parameters:
- $ref: '#/components/parameters/RecordingTranscriptionId'
responses:
'200':
description: A response with a single recording transcription resource.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RecordingTranscription'
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
/recordings:
get:
summary: List all call recordings
description: Returns a paginated list of your call recordings, with support for filtering to locate specific recordings.
operationId: GetRecordings
tags:
- Call Recordings
parameters:
- $ref: '#/components/parameters/call-recordings_PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
description: Filter recordings by various attributes.
schema:
type: object
properties:
conference_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: Returns only recordings associated with a given conference.
created_at:
type: object
additionalProperties: false
properties:
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only recordings created later than or at given ISO 8601 datetime.
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only recordings created earlier than or at given ISO 8601 datetime.
call_leg_id:
type: string
format: uuid
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: If present, recordings will be filtered to those with a matching call_leg_id.
call_session_id:
type: string
format: uuid
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: If present, recordings will be filtered to those with a matching call_session_id.
from:
type: string
example: '1234567890'
description: If present, recordings will be filtered to those with a matching `from` attribute (case-sensitive).
to:
type: string
example: '1234567890'
description: If present, recordings will be filtered to those with a matching `to` attribute (case-sensitive).
connection_id:
type: string
example: '175237942907135762'
description: If present, recordings will be filtered to those with a matching `connection_id` attribute (case-sensitive).
sip_call_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: If present, recordings will be filtered to those with a matching `sip_call_id` attribute. Matching
is case-sensitive.
call_control_id:
type: string
example: v3:e-31OnvjEM7Y4wvxr3TKNk8M3QyLcGZPiUIzCGtwQtOtEjY-B0urkw
description: If present, recordings will be filtered to those with a matching `call_control_id`.
conference_region:
type: string
example: us
description: If present, recordings will be filtered to those with a matching `conference_region`.
start_time:
type: object
additionalProperties: false
properties:
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only recordings with a start time later than or equal to the given ISO 8601 datetime.
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only recordings with a start time earlier than or equal to the given ISO 8601 datetime.
end_time:
type: object
additionalProperties: false
properties:
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only recordings with an end time later than or equal to the given ISO 8601 datetime.
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: Returns only recordings with an end time earlier than or equal to the given ISO 8601 datetime.
responses:
'200':
description: A response containing multiple recordings.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RecordingResponseData'
meta:
$ref: '#/components/schemas/PaginationMeta'
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
'403':
$ref: '#/components/responses/ForbiddenResponse'
'500':
$ref: '#/components/responses/call-recordings_InternalServerErrorResponse'
/recordings/actions/delete:
post:
summary: Delete a list of call recordings
description: Permanently deletes a list of call recordings.
operationId: DeleteRecordings
tags:
- Call Recordings
requestBody:
$ref: '#/components/requestBodies/DeleteRecordingsRequest'
responses:
'200':
description: The recordings have been successfully deleted.
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- ok
example: ok
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
/recordings/{recording_id}:
delete:
summary: Delete a call recording
description: Permanently deletes the specified call recording and returns the deleted recording resource. The media
is removed and can no longer be downloaded.
operationId: DeleteRecording
tags:
- Call Recordings
parameters:
- $ref: '#/components/parameters/RecordingId'
responses:
'200':
description: A response with a single recording resource.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingResponse'
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
get:
summary: Retrieve a call recording
description: Retrieves the details of an existing call recording.
operationId: GetRecording
tags:
- Call Recordings
parameters:
- $ref: '#/components/parameters/RecordingId'
responses:
'200':
description: A response with a single recording resource.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingResponse'
default:
$ref: '#/components/responses/call-recordings_GenericErrorResponse'
'401':
$ref: '#/components/responses/call-recordings_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-recordings_NotFoundResponse'
/regions:
get:
summary: List all Regions
description: List all regions and the interfaces that region supports
operationId: ListRegions
tags:
- Regions
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/netapps_Region_17904fcfbc'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/regulatory_requirements:
get:
summary: Retrieve regulatory requirements
operationId: ListRegulatoryRequirements
tags:
- Regulatory Requirements
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number], filter[requirement_group_id],
filter[country_code], filter[phone_number_type], filter[action]'
schema:
type: object
properties:
phone_number:
type: string
example: '+41215470622'
description: Phone number to check requirements for
requirement_group_id:
type: string
example: d4c0b4a6-7bd2-40c5-a3b9-2acd99e212b2
description: ID of requirement group to check requirements for
country_code:
type: string
example: DE
description: Country code(iso2) to check requirements for
phone_number_type:
type: string
enum:
- local
- toll_free
- mobile
- national
- shared_cost
description: Phone number type to check requirements for
action:
type: string
enum:
- ordering
- porting
- action
description: Action to check requirements for
responses:
'200':
description: An array of Regulatory Requirements Responses
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RegulatoryRequirements'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns regulatory requirements for number ordering, porting, or other supported actions. Results can be
filtered by phone number, requirement group, country, number type, and action.
/reports/cdr_usage_reports/sync:
get:
tags:
- CDR Usage Reports
description: 'Generate and fetch voice usage report synchronously. This endpoint will both generate and fetch the voice
report over a specified time period. No polling is necessary but the response may take up to a couple of minutes. '
summary: Generates and fetches CDR Usage Reports
operationId: GetCDRUsageReportSync
parameters:
- name: start_date
in: query
description: Start of the date range filter (inclusive, ISO 8601).
schema:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
- name: end_date
in: query
description: End of the date range filter (inclusive, ISO 8601).
schema:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
- name: aggregation_type
in: query
description: Type of aggregation to apply to the results.
required: true
schema:
type: string
example: NO_AGGREGATION
enum:
- NO_AGGREGATION
- CONNECTION
- TAG
- BILLING_GROUP
- name: product_breakdown
in: query
description: Filter results by product breakdown.
required: true
schema:
type: string
example: NO_BREAKDOWN
enum:
- NO_BREAKDOWN
- DID_VS_TOLL_FREE
- COUNTRY
- DID_VS_TOLL_FREE_PER_COUNTRY
- name: connections
in: query
description: Filter results by connection.
schema:
type: array
example:
- 1234567890123
items:
type: number
example: 1234567890123
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/CdrGetSyncUsageReportResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: background
/reports/mdr_usage_reports:
get:
tags:
- MDR Usage Reports
description: Fetch all messaging usage reports. Usage reports are aggregated messaging data for specified time period
and breakdown
summary: Fetch all Messaging usage reports
operationId: GetMdrUsageReports
parameters:
- name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
format: int32
default: 1
description: Page number
size:
type: integer
format: int32
default: 20
description: Size of the page
examples:
page[number]=1&page[size]=20:
value:
number: 1
size: 20
summary: Default pagination with first page and 20 records per page
page[number]=2&page[size]=20:
value:
number: 2
size: 20
summary: Second page with 20 records per page
page[number]=1&page[size]=50:
value:
number: 1
size: 50
summary: First page with 50 records per page
page[number]=5&page[size]=100:
value:
number: 5
size: 100
summary: Fifth page with 100 records per page
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_MdrGetUsageReportsResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: interactive
post:
tags:
- MDR Usage Reports
description: 'Submit request for new new messaging usage report. This endpoint will pull and aggregate messaging data
in specified time period. '
summary: Create MDR Usage Report
operationId: SubmitUsageReport
requestBody:
description: Mdr usage report data
content:
'*/*':
schema:
$ref: '#/components/schemas/MdrPostUsageReportRequest'
required: true
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/MdrPostUsageReportsResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: background
/reports/mdr_usage_reports/sync:
get:
tags:
- MDR Usage Reports
description: 'Generate and fetch messaging usage report synchronously. This endpoint will both generate and fetch the
messaging report over a specified time period. No polling is necessary but the response may take up to a couple of
minutes. '
summary: Generate and fetch MDR Usage Report
operationId: GetMDRUsageReportSync
parameters:
- name: start_date
in: query
description: Start of the date range filter (inclusive, ISO 8601).
schema:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
- name: end_date
in: query
description: End of the date range filter (inclusive, ISO 8601).
schema:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
- name: aggregation_type
in: query
description: Type of aggregation to apply to the results.
required: true
schema:
type: string
example: PROFILE
enum:
- NO_AGGREGATION
- PROFILE
- TAGS
- name: profiles
in: query
description: Filter results by profile.
schema:
type: array
example:
- My profile
items:
type: string
example: My profile
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/MdrGetSyncUsageReportResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: background
/reports/mdr_usage_reports/{id}:
delete:
tags:
- MDR Usage Reports
description: Permanently deletes the specified messaging usage report by its identifier.
summary: Delete MDR Usage Report
operationId: DeleteUsageReport
parameters:
- name: id
in: path
description: Unique identifier of the resource.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/MdrDeleteUsageReportsResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: interactive
get:
tags:
- MDR Usage Reports
description: Fetch a single messaging usage report by id
summary: Retrieve messaging report
operationId: GetUsageReport
parameters:
- name: id
in: path
description: Unique identifier of the resource.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/MdrGetUsageReportsByIdResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: interactive
/reports/mdrs:
get:
tags:
- MDR Detail Reports
description: Returns message detail records (MDRs) matching the provided criteria, such as date range, direction, status,
and message type.
summary: Fetch all Mdr records
operationId: GetPaginatedMdrs
parameters:
- name: start_date
in: query
description: Pagination start date
schema:
type: string
- name: end_date
in: query
description: Pagination end date
schema:
type: string
- name: id
in: query
description: Filter results by identifier.
schema:
type: string
description: Message uuid
example: e093fbe0-5bde-11eb-ae93-0242ac130002
- name: direction
in: query
description: Filter results by direction.
schema:
type: string
description: Direction (inbound or outbound)
example: INBOUND
enum:
- INBOUND
- OUTBOUND
- name: profile
in: query
description: Filter results by profile.
schema:
type: string
description: Name of the profile
example: My profile
- name: cld
in: query
description: Filter results by cld.
schema:
type: string
description: Destination number
example: '+15551237654'
- name: cli
in: query
description: Filter results by cli.
schema:
type: string
description: Origination number
example: '+15551237654'
- name: status
in: query
description: Filter results by status.
schema:
type: string
description: Message status
example: DELIVERED
enum:
- GW_TIMEOUT
- DELIVERED
- DLR_UNCONFIRMED
- DLR_TIMEOUT
- RECEIVED
- GW_REJECT
- FAILED
- name: message_type
in: query
description: Filter results by message type.
schema:
type: string
description: Type of message
example: SMS
enum:
- SMS
- MMS
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_MdrGetDetailResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/reporting_ErrorResponse_77109e5d17'
x-latency-category: interactive
/reports/wdrs:
get:
tags:
- WDR Detail Reports
description: Returns wireless detail records (WDRs) matching the provided criteria, such as date range, SIM card, IMSI,
or phone number, with pagination and sorting.
summary: Fetches all Wdr records
operationId: GetPaginatedWdrs
parameters:
- name: start_date
in: query
description: Start date
schema:
type: string
example: '2021-05-01T00:00:00Z'
- name: end_date
in: query
description: End date
schema:
type: string
example: '2021-06-01T00:00:00Z'
- name: id
in: query
description: Filter results by identifier.
schema:
type: string
description: WDR uuid
example: e093fbe0-5bde-11eb-ae93-0242ac130002
- name: mcc
in: query
description: Filter results by mcc.
schema:
type: string
description: Mobile country code
example: '204'
- name: mnc
in: query
description: Filter results by mnc.
schema:
type: string
description: Mobile network code
example: '01'
- name: imsi
in: query
description: Filter results by imsi.
schema:
type: string
description: International mobile subscriber identity
example: '123456'
- name: sim_group_name
in: query
description: Filter results by sim group name.
schema:
type: string
description: Sim group name
example: sim name
- name: sim_group_id
in: query
description: Filter results by sim group id.
schema:
type: string
description: Sim group unique identifier
example: f05a189f-7c46-4531-ac56-1460dc465a42
- name: sim_card_id
in: query
description: Filter results by sim card id.
schema:
type: string
description: Sim card unique identifier
example: 877f80a6-e5b2-4687-9a04-88076265720f
- name: phone_number
in: query
description: Filter results by phone number.
schema:
type: string
description: Phone number
example: '+12345678910'
- name: sort
in: query
description: Field and direction to sort the results by.
schema:
type: array
items:
type: string
description: Field used to order the data. If no field is specified, default value is 'created_at'
example:
- created_at
default:
- created_at
- name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
format: int32
default: 1
description: Page number
size:
type: integer
format: int32
default: 20
description: Size of the page
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/wireless-public_ExternalWdrGetDetailResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/wireless-public_ErrorResponse_ea8f2ad863'
x-latency-category: interactive
/reputation/numbers:
get:
summary: List reputation-monitored phone numbers across all enterprises
description: Convenience alias for `GET /v2/enterprises/{enterprise_id}/reputation/numbers` that returns numbers across
every enterprise you own. Useful when you don't want to look up the enterprise id first.
operationId: listReputationNumbersSimplified
tags:
- Reputation
parameters:
- $ref: '#/components/parameters/BcPageNumber'
- $ref: '#/components/parameters/BcPageSize'
- name: filter[phone_number][contains]
in: query
required: false
description: Partial match on phone number. Must contain at least 5 digits.
schema:
type: string
example: '+16035551234'
- name: filter[enterprise_id]
in: query
required: false
description: Filter by enterprise ID.
schema:
type: string
format: uuid
- name: filter[phone_number][eq]
in: query
required: false
description: Exact phone-number match (E.164).
schema:
type: string
example: '+16035551234'
- name: filter[source]
in: query
required: false
description: Only numbers with this source.
schema:
$ref: '#/components/schemas/ReputationNumberSource'
- name: filter[ownership_status]
in: query
required: false
description: Only numbers with this ownership status. `removed` lists the numbers that were removed, each with its
`removal_reason` and `removed_at`; removed numbers are not returned otherwise.
schema:
$ref: '#/components/schemas/ReputationOwnershipStatus'
responses:
'200':
description: Paginated list.
content:
application/json:
schema:
$ref: '#/components/schemas/ReputationPhoneNumberListWithReputation'
'401':
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
/reputation/numbers/{phone_number}:
delete:
summary: Remove a phone number from reputation monitoring (no enterprise_id required)
description: Convenience alias for `DELETE /v2/enterprises/{enterprise_id}/reputation/numbers/{phone_number}`.
operationId: disassociateReputationNumberSimplified
tags:
- Reputation
parameters:
- $ref: '#/components/parameters/PhoneNumberPath'
responses:
'204':
description: 204 (no body)
'401':
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
'404':
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
get:
summary: Get a reputation-monitored number (no enterprise_id required)
description: Convenience alias for `GET /v2/enterprises/{enterprise_id}/reputation/numbers/{phone_number}`.
operationId: getPhoneNumberReputationSimplified
tags:
- Reputation
parameters:
- $ref: '#/components/parameters/PhoneNumberPath'
- name: fresh
in: query
description: When true, fetches fresh reputation data (incurs API cost). When false (default), returns cached data.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Phone number with reputation data.
content:
application/json:
schema:
$ref: '#/components/schemas/ReputationPhoneNumberWithReputation'
'401':
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
'404':
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
/requirement_groups:
get:
summary: List requirement groups
operationId: GetRequirementGroups
tags:
- Requirement Groups
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[country_code], filter[phone_number_type],
filter[action], filter[status], filter[customer_reference]'
schema:
type: object
properties:
country_code:
type: string
description: Filter requirement groups by country code (iso alpha 2)
phone_number_type:
type: string
enum:
- local
- toll_free
- mobile
- national
- shared_cost
description: Filter requirement groups by phone number type.
action:
type: string
enum:
- ordering
- porting
- action
description: Filter requirement groups by action type
status:
type: string
enum:
- approved
- unapproved
- pending-approval
- declined
- expired
description: Filter requirement groups by status
customer_reference:
type: string
description: Filter requirement groups by customer reference
responses:
'200':
description: List requirement groups
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RequirementGroup'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns regulatory requirement groups for the account. Results can be filtered by country, number type,
action, approval status, and customer reference.
post:
summary: Create a new requirement group
operationId: CreateRequirementGroup
tags:
- Requirement Groups
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
country_code:
type: string
description: ISO alpha 2 country code
example: US
phone_number_type:
type: string
enum:
- local
- toll_free
- mobile
- national
- shared_cost
example: local
action:
type: string
enum:
- ordering
- porting
example: ordering
customer_reference:
type: string
example: My Requirement Group
regulatory_requirements:
type: array
items:
type: object
properties:
requirement_id:
type: string
field_value:
type: string
required:
- country_code
- phone_number_type
- action
responses:
'200':
description: Requirement group created
content:
application/json:
schema:
$ref: '#/components/schemas/RequirementGroup'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Creates a regulatory requirement group for a country, number type, and ordering or porting action. Optional
customer-reference and requirement values are retained on the created group.
/requirement_groups/{id}:
delete:
summary: Delete a requirement group by ID
operationId: DeleteRequirementGroup
tags:
- Requirement Groups
parameters:
- in: path
name: id
schema:
type: string
required: true
description: ID of the requirement group
responses:
'200':
description: Deleted requirement group
content:
application/json:
schema:
$ref: '#/components/schemas/RequirementGroup'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Deletes the regulatory requirement group identified by `id`. The response contains the deleted requirement-group
representation.
get:
summary: Get a single requirement group by ID
operationId: GetRequirementGroup
tags:
- Requirement Groups
parameters:
- in: path
name: id
schema:
type: string
required: true
description: ID of the requirement group to retrieve
responses:
'200':
description: A single requirement group
content:
application/json:
schema:
$ref: '#/components/schemas/RequirementGroup'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Returns the regulatory requirement group identified by `id`, including its requirement values and current
approval status.
patch:
summary: Update requirement values in requirement group
operationId: UpdateRequirementGroup
tags:
- Requirement Groups
parameters:
- in: path
name: id
schema:
type: string
required: true
description: ID of the requirement group
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
customer_reference:
type: string
example: '0002'
description: Reference for the customer
regulatory_requirements:
type: array
items:
type: object
properties:
requirement_id:
type: string
example: 53970723-fbff-4f46-a975-f62be6c1a585
description: Unique identifier for the regulatory requirement
field_value:
type: string
example: new requirement value
description: New value for the regulatory requirement
responses:
'200':
description: Updated requirement group
content:
application/json:
schema:
$ref: '#/components/schemas/RequirementGroup'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Updates the customer reference or regulatory requirement values on the specified requirement group. The
response contains the updated group.
/requirement_groups/{id}/submit_for_approval:
post:
summary: Submit a Requirement Group for Approval
operationId: SubmitRequirementGroup
tags:
- Requirement Groups
parameters:
- in: path
name: id
schema:
type: string
required: true
description: ID of the requirement group to submit
responses:
'200':
description: A single requirement group
content:
application/json:
schema:
$ref: '#/components/schemas/RequirementGroup'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Submits the specified regulatory requirement group for approval. The response contains the requirement
group with its resulting approval status.
/requirement_types:
get:
summary: List all requirement types
description: List all requirement types ordered by created_at descending
operationId: ListRequirementTypes
x-latency-category: responsive
tags:
- Requirement Types
parameters:
- $ref: '#/components/parameters/FilterRequirementTypesConsolidated'
- $ref: '#/components/parameters/SortRequirementTypesConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/DocReqsRequirementTypeList'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
default:
$ref: '#/components/responses/documents_GenericErrorResponse'
/requirement_types/{id}:
get:
summary: Retrieve a requirement types
description: Returns the details of a single requirement type by its identifier, describing a kind of documentation
needed for regulatory purposes.
operationId: RetrieveRequirementType
x-latency-category: responsive
tags:
- Requirement Types
parameters:
- $ref: '#/components/parameters/DocReqsRequirementTypeId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/DocReqsRequirementType'
'422':
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
default:
$ref: '#/components/responses/documents_GenericErrorResponse'
/requirements:
get:
summary: List all requirements
description: List all requirements with filtering, sorting, and pagination
operationId: ListRequirements
x-latency-category: responsive
tags:
- Requirements
parameters:
- $ref: '#/components/parameters/FilterRequirementsConsolidated'
- $ref: '#/components/parameters/SortRequirementsConsolidated'
- $ref: '#/components/parameters/documents_PageConsolidated'
- $ref: '#/components/parameters/RequirementVersion'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/DocReqsRequirementList'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
default:
$ref: '#/components/responses/documents_GenericErrorResponse'
/requirements/{id}:
get:
summary: Retrieve a document requirement
description: Returns a single document requirement record by its identifier, describing the documentation needed for
number-related actions. A specific requirement version can be requested.
operationId: RetrieveDocumentRequirements
x-latency-category: responsive
tags:
- Requirements
parameters:
- $ref: '#/components/parameters/DocReqsRequirementId'
- $ref: '#/components/parameters/RequirementVersion'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/DocReqsRequirement'
'422':
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
default:
$ref: '#/components/responses/documents_GenericErrorResponse'
/requirements/{id}/versions:
post:
summary: Schedule a future requirement version
description: Create a new pending version of a requirement with a future effective start date. Only one pending version
may exist per requirement at a time.
operationId: CreateRequirementVersion
x-hidden: true
x-latency-category: responsive
tags:
- Requirements
parameters:
- $ref: '#/components/parameters/DocReqsRequirementId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRequirementVersionRequest'
responses:
'201':
description: Pending version created successfully
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/DocReqsRequirement'
'422':
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
default:
$ref: '#/components/responses/documents_GenericErrorResponse'
/requirements/{id}/versions/pending:
delete:
summary: Cancel a pending requirement version
description: Cancel a pending requirement version. The pending version is marked as cancelled and the previously active
version is restored with effective_end_at set to NULL.
operationId: CancelPendingRequirementVersion
x-hidden: true
x-latency-category: responsive
tags:
- Requirements
parameters:
- $ref: '#/components/parameters/DocReqsRequirementId'
responses:
'200':
description: Pending version cancelled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CancelPendingVersionResponse'
'422':
description: Unprocessable entity. The specified requirement is not a pending version.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
default:
$ref: '#/components/responses/documents_GenericErrorResponse'
/room_compositions:
get:
summary: View a list of room compositions.
description: Returns a paginated list of room compositions. Filter compositions by creation date, room session, or processing
status.
operationId: ListRoomCompositions
x-endpoint-cost: medium
tags:
- Room Compositions
parameters:
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte],
filter[date_created_at][lte], filter[session_id], filter[status]'
schema:
type: object
properties:
date_created_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room compositions created on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room compositions created on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room compositions created on or before that date.
session_id:
type: string
format: uuid
example: 92e7d459-bcc5-4386-9f5f-6dd14a82588d
description: The session_id for filtering room compositions.
status:
type: string
example: completed
enum:
- completed
- processing
- enqueued
description: The status for filtering room compositions.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List room compositions response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RoomComposition'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
post:
summary: Create a room composition.
description: Asynchronously create a room composition.
operationId: CreateRoomComposition
tags:
- Room Compositions
x-endpoint-cost: heavy
requestBody:
description: Parameters that can be defined during room composition creation.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoomCompositionRequest'
responses:
'202':
description: Composition request accepted. Poll GET /room_compositions/{room_composition_id} with the returned id
until the composition completes.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RoomComposition'
'422':
$ref: '#/components/responses/video_UnprocessableEntity'
/room_compositions/{room_composition_id}:
delete:
summary: Delete a room composition.
description: Synchronously delete a room composition.
operationId: DeleteRoomComposition
tags:
- Room Compositions
x-endpoint-cost: medium
parameters:
- name: room_composition_id
in: path
description: The unique identifier of a room composition.
required: true
schema:
type: string
format: uuid
example: 5219b3af-87c6-4c08-9b58-5a533d893e21
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/video_ResourceNotFound'
get:
summary: View a room composition.
operationId: ViewRoomComposition
tags:
- Room Compositions
x-endpoint-cost: light
parameters:
- name: room_composition_id
in: path
description: The unique identifier of a room composition.
required: true
schema:
type: string
format: uuid
example: 5219b3af-87c6-4c08-9b58-5a533d893e21
responses:
'200':
description: Get room composition response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RoomComposition'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
description: Returns the composition identified by `room_composition_id`, including its room and session, processing
status, media details, video layout, lifecycle timestamps, and download URL.
/room_participants:
get:
summary: View a list of room participants.
description: Returns a paginated list of room participants across sessions. Filter participants by session, join, update,
or leave date and by participant context.
operationId: ListRoomParticipants
x-endpoint-cost: medium
tags:
- Room Participants
parameters:
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_joined_at][eq], filter[date_joined_at][gte],
filter[date_joined_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte],
filter[date_left_at][eq], filter[date_left_at][gte], filter[date_left_at][lte], filter[context], filter[session_id]'
schema:
type: object
properties:
date_joined_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that joined on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that joined on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that joined on or before that date.
date_updated_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants updated on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants updated on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants updated on or before that date.
date_left_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that left on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that left on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that left on or before that date.
context:
type: string
example: Alice
description: Filter room participants based on the context.
session_id:
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Session_id for filtering room participants.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List room participants response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RoomParticipant'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_participants/{room_participant_id}:
get:
summary: View a room participant.
operationId: ViewRoomParticipant
tags:
- Room Participants
x-endpoint-cost: light
parameters:
- name: room_participant_id
in: path
description: The unique identifier of a room participant.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
responses:
'200':
description: Get room participant response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RoomParticipant'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
description: Returns the participant identified by `room_participant_id`, including its session, context, and join,
update, and leave timestamps.
/room_recordings:
delete:
summary: Delete several room recordings in a bulk.
description: Deletes the room recordings that match the supplied filters and returns the number of recordings affected.
Filters support room, session, participant, recording type, status, duration, and start or end dates.
operationId: DeleteRoomRecordings
x-endpoint-cost: heavy
tags:
- Room Recordings
parameters:
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_ended_at][eq], filter[date_ended_at][gte],
filter[date_ended_at][lte], filter[date_started_at][eq], filter[date_started_at][gte], filter[date_started_at][lte],
filter[room_id], filter[participant_id], filter[session_id], filter[status], filter[type], filter[duration_secs]'
schema:
type: object
properties:
date_ended_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings ended on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings ended on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings ended on or before that date.
date_started_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings started on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings started on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings started on or before that date.
room_id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: room_id for filtering room recordings.
participant_id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: participant_id for filtering room recordings.
session_id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: session_id for filtering room recordings.
status:
type: string
example: completed
description: status for filtering room recordings.
type:
type: string
example: audio
description: type for filtering room recordings.
duration_secs:
type: integer
example: 20
description: duration_secs greater or equal for filtering room recordings.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'201':
description: Successful response for Bulk Delete Room recordings requests
content:
application/json:
schema:
type: object
title: Bulk Room Recordings Delete Response
properties:
data:
type: object
properties:
room_recordings:
type: integer
description: Amount of room recordings affected
example: 5
'422':
$ref: '#/components/responses/video_UnprocessableEntity'
get:
summary: View a list of room recordings.
description: Returns a paginated list of room recordings. Filter recordings by room, session, participant, recording
type, status, duration, or start and end dates.
operationId: ListRoomRecordings
x-endpoint-cost: medium
tags:
- Room Recordings
parameters:
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_ended_at][eq], filter[date_ended_at][gte],
filter[date_ended_at][lte], filter[date_started_at][eq], filter[date_started_at][gte], filter[date_started_at][lte],
filter[room_id], filter[participant_id], filter[session_id], filter[status], filter[type], filter[duration_secs]'
schema:
type: object
properties:
date_ended_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings ended on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings ended on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings ended on or before that date.
date_started_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings started on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings started on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room recordings started on or before that date.
room_id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: room_id for filtering room recordings.
participant_id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: participant_id for filtering room recordings.
session_id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: session_id for filtering room recordings.
status:
type: string
example: completed
description: status for filtering room recordings.
type:
type: string
example: audio
description: type for filtering room recordings.
duration_secs:
type: integer
example: 20
description: duration_secs greater or equal for filtering room recordings.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List room recordings response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RoomRecording'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_recordings/{room_recording_id}:
delete:
summary: Delete a room recording.
description: Synchronously deletes the specified video room recording. The recording's media is removed permanently.
operationId: DeleteRoomRecording
tags:
- Room Recordings
x-endpoint-cost: medium
parameters:
- name: room_recording_id
in: path
description: The unique identifier of a room recording.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/video_ResourceNotFound'
get:
summary: View a room recording.
operationId: ViewRoomRecording
tags:
- Room Recordings
x-endpoint-cost: light
parameters:
- name: room_recording_id
in: path
description: The unique identifier of a room recording.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
responses:
'200':
description: Get room recording response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RoomRecording'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
description: Returns the recording identified by `room_recording_id`, including its room, session, participant, status,
media details, lifecycle timestamps, and download URL.
/room_sessions:
get:
summary: View a list of room sessions.
description: Returns a paginated list of room sessions across the account. Filter sessions by room, creation, update,
or end date and active status, and use `include_participants` to include participant records.
operationId: ListRoomSessions
x-endpoint-cost: medium
tags:
- Room Sessions
parameters:
- name: include_participants
in: query
description: To decide if room participants should be included in the response.
schema:
type: boolean
example: true
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte],
filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte],
filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[room_id], filter[active]'
schema:
type: object
properties:
date_created_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions created on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions created on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions created on or before that date.
date_updated_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions updated on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions updated on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions updated on or before that date.
date_ended_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions ended on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions ended on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions ended on or before that date.
room_id:
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Room_id for filtering room sessions.
active:
type: boolean
example: true
description: Filter active or inactive room sessions.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List room sessions response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RoomSession'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_sessions/{room_session_id}:
get:
summary: View a room session.
operationId: ViewRoomSession
tags:
- Room Sessions
x-endpoint-cost: light
parameters:
- name: room_session_id
in: path
description: The unique identifier of a room session.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
- name: include_participants
in: query
description: To decide if room participants should be included in the response.
schema:
type: boolean
example: true
responses:
'200':
description: Get room session response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RoomSession'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
description: Returns the room session identified by `room_session_id`, including its room, active status, and lifecycle
timestamps. Use `include_participants` to include its participant records.
/room_sessions/{room_session_id}/actions/end:
post:
summary: End a room session.
description: 'Note: this will also kick all participants currently present in the room'
operationId: EndSession
x-endpoint-cost: medium
tags:
- Room Sessions
security: []
parameters:
- name: room_session_id
in: path
description: The unique identifier of a room session.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
responses:
'200':
description: Success Action Response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
result:
type: string
example: ok
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_sessions/{room_session_id}/actions/kick:
post:
summary: Kick participants from a room session.
description: Removes the selected participants from the specified room session. Apply the action to a list of participant
IDs or to `all`, with optional participant IDs excluded from the action.
operationId: KickParticipantInSession
x-endpoint-cost: medium
tags:
- Room Sessions
security: []
parameters:
- name: room_session_id
in: path
description: The unique identifier of a room session.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
requestBody:
description: Parameters that can be defined during Kick action.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ActionsParticipantsRequest'
responses:
'200':
description: Success Action Response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
result:
type: string
example: ok
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_sessions/{room_session_id}/actions/mute:
post:
summary: Mute participants in room session.
description: Mutes the selected participants in the specified room session. Apply the action to a list of participant
IDs or to `all`, with optional participant IDs excluded from the action.
operationId: MuteParticipantInSession
x-endpoint-cost: medium
tags:
- Room Sessions
security: []
parameters:
- name: room_session_id
in: path
description: The unique identifier of a room session.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
requestBody:
description: Parameters that can be defined during Mute action.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ActionsParticipantsRequest'
responses:
'200':
description: Success Action Response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
result:
type: string
example: ok
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_sessions/{room_session_id}/actions/unmute:
post:
summary: Unmute participants in room session.
description: Unmutes the selected participants in the specified room session. Apply the action to a list of participant
IDs or to `all`, with optional participant IDs excluded from the action.
operationId: UnmuteParticipantInSession
x-endpoint-cost: medium
tags:
- Room Sessions
security: []
parameters:
- name: room_session_id
in: path
description: The unique identifier of a room session.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
requestBody:
description: Parameters that can be defined during Unmute action.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ActionsParticipantsRequest'
responses:
'200':
description: Success Action Response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
result:
type: string
example: ok
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/room_sessions/{room_session_id}/participants:
get:
summary: View a list of room participants.
description: Returns a paginated list of participants for the specified room session. Filter participants by join, update,
or leave date and by participant context.
operationId: RetrieveListRoomParticipants
x-endpoint-cost: medium
tags:
- Room Sessions
parameters:
- name: room_session_id
in: path
description: The unique identifier of a room session.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_joined_at][eq], filter[date_joined_at][gte],
filter[date_joined_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte],
filter[date_left_at][eq], filter[date_left_at][gte], filter[date_left_at][lte], filter[context]'
schema:
type: object
properties:
date_joined_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that joined on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that joined on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that joined on or before that date.
date_updated_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants updated on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants updated on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants updated on or before that date.
date_left_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that left on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that left on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room participants that left on or before that date.
context:
type: string
example: Alice
description: Filter room participants based on the context.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List room participants response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RoomParticipant'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/rooms:
get:
summary: View a list of rooms.
description: Returns a paginated list of rooms. Filter the results by creation or update date and unique name, and use
`include_sessions` to include each room’s sessions.
operationId: ListRooms
x-endpoint-cost: medium
tags:
- Rooms
parameters:
- name: include_sessions
in: query
description: To decide if room sessions should be included in the response.
schema:
type: boolean
example: true
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte],
filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte],
filter[unique_name]'
schema:
type: object
properties:
date_created_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering rooms created on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering rooms created on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering rooms created on or before that date.
date_updated_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering rooms updated on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering rooms updated on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering rooms updated on or before that date.
unique_name:
type: string
example: my_video_room
description: Unique_name for filtering rooms.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List rooms response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Room'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
post:
summary: Create a room.
description: Synchronously creates a new video room with the provided configuration and returns the created room.
operationId: CreateRoom
tags:
- Rooms
x-endpoint-cost: medium
requestBody:
description: Parameters that can be defined during room creation.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoomRequest'
responses:
'201':
description: Create room response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Room'
'422':
$ref: '#/components/responses/video_UnprocessableEntity'
/rooms/{room_id}:
delete:
summary: Delete a room.
description: Synchronously delete a Room. Participants from that room will be kicked out, they won't be able to join
that room anymore, and you won't be charged anymore for that room.
operationId: DeleteRoom
tags:
- Rooms
x-endpoint-cost: medium
parameters:
- name: room_id
in: path
description: The unique identifier of a room.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/video_ResourceNotFound'
get:
summary: View a room.
operationId: ViewRoom
tags:
- Rooms
x-endpoint-cost: light
parameters:
- name: room_id
in: path
description: The unique identifier of a room.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
- name: include_sessions
in: query
description: To decide if room sessions should be included in the response.
schema:
type: boolean
example: true
responses:
'200':
description: Get room response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Room'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
description: Returns the room identified by `room_id`, including its participant limit, recording and webhook configuration,
and active session identifier. Use `include_sessions` to include its sessions.
patch:
summary: Update a room.
description: Synchronously updates the specified video room's configuration and returns the updated room.
operationId: UpdateRoom
tags:
- Rooms
x-endpoint-cost: medium
parameters:
- name: room_id
in: path
description: The unique identifier of a room.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
requestBody:
description: Parameters that can be defined during room update.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchRoomRequest'
responses:
'200':
description: Update room response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Room'
'401':
$ref: '#/components/responses/video_UnauthorizedResponse'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
'422':
description: Bad request
/rooms/{room_id}/actions/generate_join_client_token:
post:
summary: Create Client Token to join a room.
description: Synchronously create an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client
Token will expire after `token_ttl_secs`, a Refresh Token is also provided to refresh a Client Token, the Refresh
Token expires after `refresh_token_ttl_secs`.
operationId: CreateRoomClientToken
tags:
- Rooms Client Tokens
x-endpoint-cost: medium
parameters:
- name: room_id
in: path
description: The unique identifier of a room.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
requestBody:
description: Parameters that can be defined during Room Client Token creation.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoomClientTokenRequest'
responses:
'201':
description: Create room client token response.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
token:
type: string
example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ
token_expires_at:
description: ISO 8601 timestamp when the token expires.
type: string
format: date-time
example: '2021-03-26T17:51:59Z'
refresh_token:
type: string
example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ
refresh_token_expires_at:
description: ISO 8601 timestamp when the refresh token expires.
type: string
format: date-time
example: '2021-03-26T17:51:59Z'
example:
token: eyJhbGciOiJFZDI1NTE5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ0ZWxueXhfYWNjZXNzX3Rva2VuIiwiZXhwIjoxNjE5MDk0Mjk1LCJncmFudHMiOlt7ImFjdGlvbnMiOlsiam9pbiJdLCJyZXNvdXJjZXMiOlsidGVsbnl4OnZpZGVvOnJvb21zOjllMmEwY2JlLWNlNjYtNDExZS1hMWFjLTQ2OGYwYjEwM2M5YSJdLCJzdWJqZWN0cyI6WyJ0ZWxueXg6dXNlcnM6NzgyYjJjYmUtODQ2Ni00ZTNmLWE0ZDMtOTc4MWViNTc3ZTUwIl19XSwiZ3JhbnRzX3ZlcnNpb24iOiIxLjAuMCIsImlhdCI6MTYxOTA5MzY5NSwiaXNzIjoidGVsbnl4X2FjY2Vzc190b2tlbiIsImp0aSI6IjllNjIyOTA2LTc1ZTctNDBiNi1iOTAwLTc1NGIxZjNlZDMyZiIsIm5iZiI6MTYxOTA5MzY5NCwic3ViIjoibnVsbCIsInR5cCI6ImFjY2VzcyJ9.1JGK9PyHkTtoP_iMu-8TzXH_fhmnsDtZZOAJLDzLW6DDtAb80wZ93l1VH5yNx5tFqwIFG0t48dRiBKWlW-nzDA
token_expires_at: '2021-04-22T12:24:55Z'
refresh_token: eyJhbGciOiJFZDI1NTE5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ0ZWxueXhfYWNjZXNzX3Rva2VuIiwiZXhwIjoxNjE5MDkzNzA1LCJncmFudHMiOlt7ImFjdGlvbnMiOlsiam9pbiJdLCJyZXNvdXJjZXMiOlsidGVsbnl4OnZpZGVvOnJvb21zOjllMmEwY2JlLWNlNjYtNDExZS1hMWFjLTQ2OGYwYjEwM2M5YSJdLCJzdWJqZWN0cyI6WyJ0ZWxueXg6dXNlcnM6NzgyYjJjYmUtODQ2Ni00ZTNmLWE0ZDMtOTc4MWViNTc3ZTUwIl19XSwiZ3JhbnRzX3ZlcnNpb24iOiIxLjAuMCIsImlhdCI6MTYxOTA5MzY5NSwiaXNzIjoidGVsbnl4X2FjY2Vzc190b2tlbiIsImp0aSI6ImQ3OWJlMzhjLWFkNTQtNGQ5ZC1hODc4LWExNjVjNTk0MGQwNyIsIm5iZiI6MTYxOTA5MzY5NCwic3ViIjoibnVsbCIsInR5cCI6InJlZnJlc2gifQ.FHsp7KlVXn1E5tTUiKZzmQ4of39gi57AakeQeqI0oAa8hzjFMVb0RGj-mxWTvHVen4GpgsUW_epqqaxK16viCA
refresh_token_expires_at: '2021-04-22T12:15:05Z'
'403':
$ref: '#/components/responses/video_Forbidden'
/rooms/{room_id}/actions/refresh_client_token:
post:
summary: Refresh Client Token to join a room.
description: Synchronously refresh an Client Token to join a Room. Client Token is necessary to join a Telnyx Room.
Client Token will expire after `token_ttl_secs`.
operationId: RefreshRoomClientToken
tags:
- Rooms Client Tokens
x-endpoint-cost: light
security: []
parameters:
- name: room_id
in: path
description: The unique identifier of a room.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
requestBody:
description: Parameters that can be defined during Room Client Token refresh.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RefreshRoomClientTokenRequest'
responses:
'201':
description: Refresh room client token response.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
token:
type: string
example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ
token_expires_at:
description: ISO 8601 timestamp when the token expires.
type: string
format: date-time
example: '2021-03-26T17:51:59Z'
example:
token: eyJhbGciOiJFZDI1NTE5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJ0ZWxueXhfYWNjZXNzX3Rva2VuIiwiZXhwIjoxNjE5MDk0Mjk1LCJncmFudHMiOlt7ImFjdGlvbnMiOlsiam9pbiJdLCJyZXNvdXJjZXMiOlsidGVsbnl4OnZpZGVvOnJvb21zOjllMmEwY2JlLWNlNjYtNDExZS1hMWFjLTQ2OGYwYjEwM2M5YSJdLCJzdWJqZWN0cyI6WyJ0ZWxueXg6dXNlcnM6NzgyYjJjYmUtODQ2Ni00ZTNmLWE0ZDMtOTc4MWViNTc3ZTUwIl19XSwiZ3JhbnRzX3ZlcnNpb24iOiIxLjAuMCIsImlhdCI6MTYxOTA5MzY5NSwiaXNzIjoidGVsbnl4X2FjY2Vzc190b2tlbiIsImp0aSI6IjllNjIyOTA2LTc1ZTctNDBiNi1iOTAwLTc1NGIxZjNlZDMyZiIsIm5iZiI6MTYxOTA5MzY5NCwic3ViIjoibnVsbCIsInR5cCI6ImFjY2VzcyJ9.1JGK9PyHkTtoP_iMu-8TzXH_fhmnsDtZZOAJLDzLW6DDtAb80wZ93l1VH5yNx5tFqwIFG0t48dRiBKWlW-nzDA
token_expires_at: '2021-04-22T12:24:55Z'
'403':
$ref: '#/components/responses/video_Forbidden'
/rooms/{room_id}/sessions:
get:
summary: View a list of room sessions.
description: Returns a paginated list of sessions for the specified room. Filter sessions by creation, update, or end
date and active status, and use `include_participants` to include participant records.
operationId: RetrieveListRoomSessions
x-endpoint-cost: medium
tags:
- Rooms
parameters:
- name: room_id
in: path
description: The unique identifier of a room.
required: true
schema:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
- name: include_participants
in: query
description: To decide if room participants should be included in the response.
schema:
type: boolean
example: true
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte],
filter[date_created_at][lte], filter[date_updated_at][eq], filter[date_updated_at][gte], filter[date_updated_at][lte],
filter[date_ended_at][eq], filter[date_ended_at][gte], filter[date_ended_at][lte], filter[active]'
schema:
type: object
properties:
date_created_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions created on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions created on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions created on or before that date.
date_updated_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions updated on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions updated on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions updated on or before that date.
date_ended_at:
type: object
properties:
eq:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions ended on that date.
gte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions ended on or after that date.
lte:
type: string
format: date
example: '2021-04-25'
description: ISO 8601 date for filtering room sessions ended on or before that date.
active:
type: boolean
example: true
description: Filter active or inactive room sessions.
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
description: List room sessions response.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RoomSession'
meta:
$ref: '#/components/schemas/PaginationMeta'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
/session_analysis/metadata:
get:
tags:
- Session Analysis
summary: Get metadata overview
description: Returns all available record types and supported query parameters for session analysis.
operationId: GetSessionAnalysisMetadata
responses:
'200':
description: Metadata overview
content:
application/json:
schema:
$ref: '#/components/schemas/MetadataOverviewResponse'
example:
record_types:
- record_type: string
aliases:
- string
product: string
event: string
description: string
child_relationships:
- relationship_type: string
via:
local_field: string
parent_field: string
cost_rollup: false
traversal_enabled: false
description: string
child_product: string
child_event: string
child_record_type: string
parent_relationships:
- relationship_type: string
via:
local_field: string
parent_field: string
cost_rollup: false
traversal_enabled: false
description: string
parent_product: string
parent_event: string
parent_record_type: string
meta:
total_record_types: 0
last_updated: '2024-01-23T18:10:02.574Z'
query_parameters: {}
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
/session_analysis/metadata/{record_type}:
get:
tags:
- Session Analysis
summary: Get record type metadata
description: Returns detailed metadata for a specific record type, including relationships and examples.
operationId: GetSessionAnalysisRecordTypeMetadata
parameters:
- name: record_type
in: path
required: true
description: The record type identifier (e.g. "call-control").
schema:
type: string
responses:
'200':
description: Record type metadata
content:
application/json:
schema:
$ref: '#/components/schemas/RecordTypeMetadataResponse'
example:
record_type: call-control
aliases:
- call_control
product: Voice
event: call.hangup
child_relationships: []
parent_relationships: []
examples:
event_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
meta:
total_children: 0
total_siblings: 0
total_parents: 0
max_recommended_depth: 1
'404':
description: Record type not found
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
/session_analysis/{record_type}/{event_id}:
get:
tags:
- Session Analysis
summary: Get session analysis
description: Retrieves a full session analysis tree for a given event, including costs, child events, and product linkages.
operationId: GetSessionAnalysis
parameters:
- name: record_type
in: path
required: true
description: The record type identifier.
schema:
type: string
- name: event_id
in: path
required: true
description: The event identifier (UUID).
schema:
type: string
format: uuid
- name: include_children
in: query
required: false
description: Whether to include child events in the response.
schema:
type: boolean
default: true
- name: max_depth
in: query
required: false
description: Maximum traversal depth for the event tree.
schema:
type: integer
minimum: 1
maximum: 5
default: 2
- name: expand
in: query
required: false
description: Controls what data to expand on each event node.
schema:
type: string
enum:
- record
- none
default: record
- name: date_time
in: query
required: false
description: ISO 8601 timestamp or date to narrow index selection for faster lookups. Accepts full datetime (e.g.,
2026-03-17T10:00:00Z) or date-only format (e.g., 2026-03-17).
schema:
type: string
format: date-time
responses:
'200':
description: Session analysis result
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisResponse'
example:
session_id: call-123
cost:
total: '0.056800'
currency: USD
root:
id: call-123
product: callcontrol-cdrs
event_name: callcontrol-cdrs
relationship: null
cost:
event_cost: '0.001800'
cumulative_cost: '0.056800'
currency: USD
links:
self: /v2/session_analysis/callcontrol-cdrs/call-123
records: /v2/detail_records?record_type=callcontrol-cdrs&id=call-123
record: {}
children: []
meta:
event_count: 3
products:
- ai-voice-assistant
- callcontrol-cdrs
- inference
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
'404':
description: Event not found
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/SessionAnalysisErrorResponse'
/seti/black_box_test_results:
get:
summary: Retrieve Black Box Test Results
description: Returns the results of the various black box tests
operationId: GetBlackBoxTestResults
tags:
- SETI Observability
parameters:
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[product]'
schema:
type: object
properties:
product:
type: string
description: Filter results for a specific product.
responses:
'200':
description: A list of black box test results.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BlackBoxTestResultSet'
'401':
description: Unauthorized
/short_codes:
get:
summary: List short codes
operationId: ListShortCodes
tags:
- Short Codes
x-group-parameters: 'true'
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[messaging_profile_id]'
schema:
type: object
properties:
messaging_profile_id:
type: string
description: Filter by Messaging Profile ID. Use the string `null` for phone numbers without assigned profiles.
A synonym for the `/messaging_profiles/{id}/short_codes` endpoint when querying about an extant profile.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response with a list of short codes.
content:
application/json:
schema:
type: object
title: List Short Codes Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/ShortCode'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns short codes owned by the authenticated account. Apply the documented filters and pagination parameters
to narrow the result set.
/short_codes/{id}:
get:
summary: Retrieve a short code
operationId: RetrieveShortCode
tags:
- Short Codes
parameters:
- $ref: '#/components/parameters/ShortCodeId'
responses:
'200':
description: Successful response with details about a short code.
content:
application/json:
schema:
type: object
title: Short Code Response
properties:
data:
$ref: '#/components/schemas/ShortCode'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the messaging configuration and assignment details for the specified short code.
patch:
summary: Update short code
operationId: UpdateShortCode
description: 'Update the settings for a specific short code. To unbind a short code from a profile, set the `messaging_profile_id`
to `null` or an empty string.
To add or update tags, include the tags field as an array of strings.'
tags:
- Short Codes
parameters:
- $ref: '#/components/parameters/ShortCodeId'
requestBody:
description: Short code update
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateShortCodeRequest'
responses:
'200':
description: Successful response with details about a short code.
content:
application/json:
schema:
type: object
title: Short Code Response
properties:
data:
$ref: '#/components/schemas/ShortCode'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/sim_card_actions:
get:
operationId: ListSimCardActions
summary: List SIM card actions
description: This API lists a paginated collection of SIM card actions. It enables exploring a collection of existing
asynchronous operations using specific filters.
tags:
- SIM Card Actions
parameters:
- $ref: '#/components/parameters/FilterSIMCardActionsConsolidated'
- $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/wireless_SIMCardAction'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_actions/{id}:
get:
operationId: GetSimCardAction
summary: Get SIM card action details
description: This API fetches detailed information about a SIM card action to follow-up on an existing asynchronous
operation.
tags:
- SIM Card Actions
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_data_usage_notifications:
get:
x-latency-category: background
operationId: ListDataUsageNotifications
summary: List SIM card data usage notifications
description: Lists a paginated collection of SIM card data usage notifications. It enables exploring the collection
using specific filters.
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- $ref: '#/components/parameters/FilterSIMCardId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SimCardDataUsageNotification'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
post:
operationId: PostSimCardDataUsageNotification
summary: Create a new SIM card data usage notification
description: Creates a new SIM card data usage notification.
tags:
- SIM Cards
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
sim_card_id:
type: string
format: uuid
description: The identification UUID of the related SIM card resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
threshold:
type: object
description: Data usage threshold that will trigger the notification.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
enum:
- MB
- GB
required:
- sim_card_id
- threshold
responses:
'201':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SimCardDataUsageNotification'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_data_usage_notifications/{id}:
delete:
operationId: DeleteSimCardDataUsageNotifications
summary: Delete SIM card data usage notifications
description: Delete the SIM Card Data Usage Notification.
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SimCardDataUsageNotification'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
get:
x-latency-category: background
operationId: GetSimCardDataUsageNotification
summary: Get a single SIM card data usage notification
description: Get a single SIM Card Data Usage Notification.
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SimCardDataUsageNotification'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
patch:
operationId: PatchSimCardDataUsageNotification
summary: Updates information for a SIM Card Data Usage Notification
description: Updates information for a SIM Card Data Usage Notification.
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SimCardDataUsageNotification'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SimCardDataUsageNotification'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_group_actions:
get:
operationId: GetSimCardGroupActions
summary: List SIM card group actions
description: This API allows listing a paginated collection a SIM card group actions. It allows to explore a collection
of existing asynchronous operation using specific filters.
tags:
- SIM Card Group Actions
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- $ref: '#/components/parameters/FilterSIMCardGroupId'
- $ref: '#/components/parameters/FilterBasicStatusLifecycle'
- name: filter[type]
description: Filter by action type.
in: query
required: false
schema:
type: string
enum:
- set_private_wireless_gateway
- remove_private_wireless_gateway
- set_wireless_blocklist
- remove_wireless_blocklist
example: set_private_wireless_gateway
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SIMCardGroupAction'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_group_actions/{id}:
get:
operationId: GetSimCardGroupAction
summary: Get SIM card group action details
description: This API allows fetching detailed information about a SIM card group action resource to make follow-ups
in an existing asynchronous operation.
tags:
- SIM Card Group Actions
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroupAction'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_groups:
get:
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- name: filter[name]
description: A valid SIM card group name.
schema:
type: string
example: My Test Group
in: query
- name: filter[private_wireless_gateway_id]
description: A Private Wireless Gateway ID associated with the group.
schema:
format: uuid
type: string
example: 7606c6d3-ff7c-49c1-943d-68879e9d584d
in: query
- name: filter[wireless_blocklist_id]
description: A Wireless Blocklist ID associated with the group.
schema:
format: uuid
type: string
example: 0f3f490e-c4d3-4cf5-838a-9970f10ee259
in: query
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SearchedSIMCardGroup'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: GetAllSimCardGroups
summary: Get all SIM card groups
description: Get all SIM card groups belonging to the user that match the given filters.
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SIMCardGroupCreate'
required: true
tags:
- SIM Card Groups
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroup'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: CreateSimCardGroup
summary: Create a SIM card group
description: Creates a new SIM card group and returns it. Groups let you apply shared settings to a set of SIM cards.
/sim_card_groups/{id}:
delete:
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroup'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: DeleteSimCardGroup
summary: Delete a SIM card group
description: Permanently deletes the specified SIM card group from your account.
get:
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
- $ref: '#/components/parameters/IncludeICCIDs'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroup'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: GetSimCardGroup
summary: Get SIM card group
description: Returns the details regarding a specific SIM card group
patch:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SIMCardGroupPatch'
required: true
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroup'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: UpdateSimCardGroup
summary: Update a SIM card group
description: Updates the specified SIM card group's attributes and returns the updated group.
/sim_card_groups/{id}/actions/remove_private_wireless_gateway:
post:
x-latency-category: background
summary: Request Private Wireless Gateway removal from SIM card group
description: This action will asynchronously remove an existing Private Wireless Gateway definition from a SIM card
group. Completing this operation defines that all SIM cards in the SIM card group will get their traffic handled by
Telnyx's default mobile network configuration.
operationId: RemoveSimCardGroupPrivateWirelessGateway
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroupAction'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_groups/{id}/actions/remove_wireless_blocklist:
post:
x-latency-category: background
summary: Request Wireless Blocklist removal from SIM card group
description: This action asynchronously removes the Wireless Blocklist assigned to a SIM Card Group. The request returns
`404` when the SIM Card Group does not exist and `422` when no Wireless Blocklist is assigned.
operationId: RemoveWirelessBlocklistForSimCardGroup
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroupAction'
description: Successful Response
'404':
description: SIM Card Group not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
simCardGroupNotFound:
summary: SIM Card Group not found
value:
errors:
- code: '10005'
meta:
url: https://developers.telnyx.com/api/errors/10005
title: Resource not found
source:
pointer: /
detail: The requested resource or URL could not be found.
'422':
description: No Wireless Blocklist is assigned to the SIM Card Group
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
wirelessBlocklistNotAssigned:
summary: No Wireless Blocklist is assigned
value:
errors:
- code: '10005'
meta:
url: https://developers.telnyx.com/api/errors/10005
title: Resource not found
source:
pointer: /wireless_blocklist_id
detail: The requested resource or URL could not be found.
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_groups/{id}/actions/set_private_wireless_gateway:
post:
x-latency-category: background
summary: Request Private Wireless Gateway assignment for SIM card group
description: This action will asynchronously assign a provisioned Private Wireless Gateway to the SIM card group. Completing
this operation defines that all SIM cards in the SIM card group will get their traffic controlled by the associated
Private Wireless Gateway. This operation will also imply that new SIM cards assigned to a group will inherit its network
definitions. If it's moved to a different group that doesn't have a Private Wireless Gateway, it'll use Telnyx's default
mobile network configuration.
operationId: SetPrivateWirelessGatewayForSimCardGroup
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
private_wireless_gateway_id:
description: The identification of the related Private Wireless Gateway resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
required:
- private_wireless_gateway_id
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroupAction'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_groups/{id}/actions/set_wireless_blocklist:
post:
x-latency-category: background
summary: Request Wireless Blocklist assignment for SIM card group
description: This action asynchronously assigns a Wireless Blocklist to all SIMs in the SIM Card Group. The request
returns `404` when the SIM Card Group does not exist and `422` when the Wireless Blocklist does not exist.
operationId: SetWirelessBlocklistForSimCardGroup
tags:
- SIM Card Groups
parameters:
- $ref: '#/components/parameters/SIMCardGroupId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
wireless_blocklist_id:
description: The identification of the related Wireless Blocklist resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
required:
- wireless_blocklist_id
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardGroupAction'
description: Successful Response
'404':
description: SIM Card Group not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
simCardGroupNotFound:
summary: SIM Card Group not found
value:
errors:
- code: '10005'
meta:
url: https://developers.telnyx.com/api/errors/10005
title: Resource not found
source:
pointer: /
detail: The requested resource or URL could not be found.
'422':
description: Wireless Blocklist not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
wirelessBlocklistNotFound:
summary: Wireless Blocklist not found
value:
errors:
- code: '10005'
meta:
url: https://developers.telnyx.com/api/errors/10005
title: Resource not found
source:
pointer: /wireless_blocklist_id
detail: The requested resource or URL could not be found.
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_card_order_preview:
post:
summary: Preview SIM card orders
description: Previews a SIM card order purchase, returning estimated costs and details before you place the order. The
preview is processed asynchronously.
operationId: PreviewSimCardOrders
tags:
- SIM Card Orders
requestBody:
content:
application/json:
schema:
type: object
required:
- quantity
- address_id
properties:
quantity:
type: integer
minimum: 1
description: The amount of SIM cards that the user would like to purchase in the SIM card order.
example: 21
address_id:
type: string
description: Uniquely identifies the address for the order.
example: '1293384261075731499'
responses:
'202':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardOrderPreview'
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
/sim_card_orders:
get:
summary: Get all SIM card orders
description: Get all SIM card orders according to filters.
operationId: GetSimCardOrders
tags:
- SIM Card Orders
parameters:
- $ref: '#/components/parameters/FilterSIMCardOrdersConsolidated'
- $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SIMCardOrder'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SimCardOrderCreate'
required: true
tags:
- SIM Card Orders
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardOrder'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
summary: Create a SIM card order
description: Creates a new order for physical SIM cards, including quantity and shipping details, and returns the created
order.
operationId: CreateSimCardOrder
/sim_card_orders/{id}:
get:
summary: Get a single SIM card order
description: Returns the details of a single SIM card order by its ID, including its status.
operationId: GetSimCardOrder
tags:
- SIM Card Orders
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardOrder'
description: Successful Response
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards:
get:
summary: Get all SIM cards
description: Get all SIM cards belonging to the user that match the given filters.
operationId: GetSimCards
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/FilterSIMCardConsolidated'
- $ref: '#/components/parameters/wireless_PageConsolidated_c5290d5308'
- $ref: '#/components/parameters/IncludeSIMCardGroup'
- $ref: '#/components/parameters/FilterSIMCardGroupId'
- name: sort
description: Sorts SIM cards by the given field. Defaults to ascending order unless field is prefixed with a minus
sign.
in: query
required: false
example: -current_billing_period_consumed_data.amount
schema:
type: string
enum:
- current_billing_period_consumed_data.amount
- -current_billing_period_consumed_data.amount
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SimpleSIMCard'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/actions/bulk_disable_voice:
post:
x-latency-category: background
summary: Request bulk disabling voice on SIM cards.
description: 'This API triggers an asynchronous operation to disable voice on SIM cards belonging to a specified SIM
Card Group.
For each SIM Card a SIM Card Action will be generated. The status of the SIM Card Actions can be followed through
the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.
The overall status of the Bulk SIM Card Action can be followed through the [List Bulk SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-bulk-sim-card-actions)
API.
'
operationId: DisableVoiceBulk
tags:
- SIM Cards
requestBody:
content:
application/json:
schema:
type: object
required:
- sim_card_group_id
properties:
sim_card_group_id:
type: string
example: 6b14e151-8493-4fa1-8664-1cc4e6d14158
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/BulkSIMCardAction'
description: Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track
progress.
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
/sim_cards/actions/bulk_enable_voice:
post:
x-latency-category: background
summary: Request bulk enabling voice on SIM cards.
description: 'This API triggers an asynchronous operation to enable voice on SIM cards belonging to a specified SIM
Card Group.
For each SIM Card a SIM Card Action will be generated. The status of the SIM Card Actions can be followed through
the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.
The overall status of the Bulk SIM Card Action can be followed through the [List Bulk SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-bulk-sim-card-actions)
API.
'
operationId: EnableVoiceBulk
tags:
- SIM Cards
requestBody:
content:
application/json:
schema:
type: object
required:
- sim_card_group_id
properties:
sim_card_group_id:
type: string
example: 6b14e151-8493-4fa1-8664-1cc4e6d14158
connection_id:
type: string
description: The identifier of the Mobile Voice Connection to associate with the SIM cards. The connection
must be owned by the same user and of type mobile_voice. If omitted, voice is enabled without
a connection association.
example: '123456789'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/BulkSIMCardAction'
description: Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track
progress.
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
'400':
description: Bad Request — invalid connection_id format
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Invalid connection_id format:
value:
errors:
- code: '10015'
title: Invalid connection_id
detail: The provided connection_id is not a valid connection ID.
source:
pointer: /connection_id
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
/sim_cards/actions/bulk_set_public_ips:
post:
x-latency-category: background
summary: Request bulk setting SIM card public IPs.
description: 'This API triggers an asynchronous operation to set a public IP for each of the specified SIM cards.
For each SIM Card a SIM Card Action will be generated. The status of the SIM Card Action can be followed through the
[List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API.
'
operationId: SetPublicIPsBulk
tags:
- SIM Cards
requestBody:
content:
application/json:
schema:
type: object
required:
- sim_card_ids
properties:
sim_card_ids:
type: array
items:
$ref: '#/components/schemas/wireless_Id_c5290d5308'
example:
- 6b14e151-8493-4fa1-8664-1cc4e6d14158
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/BulkSIMCardAction'
description: Bulk action accepted. Poll GET /bulk_sim_card_actions/{id} with the returned bulk action id to track
progress.
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
/sim_cards/actions/validate_registration_codes:
post:
summary: Validate SIM cards registration codes
tags:
- SIM Cards
description: It validates whether SIM card registration codes are valid or not.
operationId: ValidateRegistrationCodes
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
registration_codes:
type: array
items:
type: string
description: The object containing the Array of SIM card registration codes.
example:
registration_codes:
- '123456780'
- '1231231230'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/SIMCardRegistrationCodeValidations'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}:
delete:
summary: Deletes a SIM card
description: 'The SIM card will be decommissioned, removed from your account and you will stop being charged. The
SIM card won''t be able to connect to the network after the deletion is completed, thus making it impossible to consume
data.
Transitioning to the disabled state may take a period of time.
Until the transition is completed, the SIM card status will be disabling disabling. In order to
re-enable the SIM card, you will need to re-register it.'
operationId: DeleteSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
- name: report_lost
in: query
description: Enables deletion of disabled eSIMs that can't be uninstalled from a device. This is irreversible and
the eSIM cannot be re-registered.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCard'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
get:
summary: Get SIM card
description: Returns the details regarding a specific SIM card.
operationId: GetSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
- $ref: '#/components/parameters/IncludeSIMCardGroup'
- name: include_pin_puk_codes
in: query
description: When set to true, includes the PIN and PUK codes in the response. These codes are used for SIM card security
and unlocking purposes. Available for both physical SIM cards and eSIMs.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCard'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
patch:
summary: Update a SIM card
description: Updates the specified SIM card's attributes and returns the updated SIM card.
operationId: UpdateSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SIMCard'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCard'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/disable:
post:
x-latency-category: background
summary: Request a SIM card disable
description: 'This API disables a SIM card, disconnecting it from the network and making it impossible to consume data.
The API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the disabled state may take
a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)
API.
'
operationId: DisableSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/disable_voice:
post:
x-latency-category: background
summary: Request disabling voice on a SIM card
description: 'This API disables voice calling on a SIM card. The SIM card will no longer be able to make or receive
calls.
The API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card Action can be
followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)
API.
'
operationId: DisableVoiceSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
SIM card not found:
value:
errors:
- code: '404'
title: Resource not found
detail: The SIM card was not found.
source:
pointer: /id
meta:
url: https://developers.telnyx.com/docs/overview/errors/404
description: Unprocessable Entity
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/enable:
post:
x-latency-category: background
summary: Request a SIM card enable
description: 'This API enables a SIM card, connecting it to the network and making it possible to consume data.
To enable a SIM card, it must be associated with a SIM card group.
The API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the enabled state may take
a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)
API.
'
operationId: EnableSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/enable_voice:
post:
x-latency-category: background
summary: Request enabling voice on a SIM card
description: 'This API enables voice calling on a SIM card. When a connection_id is provided, the SIM is
associated with the specified Mobile Voice Connection. The connection must be owned by the same user and of type mobile_voice.
The API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card Action can be
followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)
API.
'
operationId: EnableVoiceSimCard
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
requestBody:
content:
application/json:
schema:
type: object
properties:
connection_id:
type: string
description: The identifier of the Mobile Voice Connection to associate with this SIM card. The connection
must be owned by the same user and of type mobile_voice. If omitted, voice is enabled without
a connection association.
example: '123456789'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'400':
description: Bad Request — invalid connection_id format
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Invalid connection_id format:
value:
errors:
- code: '10015'
title: Invalid connection_id
detail: The provided connection_id is not a valid connection ID.
source:
pointer: /connection_id
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
SIM card not found:
value:
errors:
- code: '404'
title: Resource not found
detail: The SIM card was not found.
source:
pointer: /id
meta:
url: https://developers.telnyx.com/docs/overview/errors/404
Connection does not belong to SIM card:
value:
errors:
- code: '10015'
title: Invalid connection
detail: The provided connection_id does not belong to this SIM card or is not a mobile voice connection.
source:
pointer: /connection_id
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
description: Unprocessable Entity
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/remove_public_ip:
post:
summary: Request removing a SIM card public IP
description: "This API removes an existing public IP from a SIM card. \n The API will trigger an asynchronous\
\ operation called a SIM Card Action. The status of the SIM Card Action can be followed through the [List SIM Card\
\ Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions) API."
operationId: RemoveSimCardPublicIp
tags:
- SIM Cards
x-latency-category: background
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/set_public_ip:
post:
x-latency-category: background
summary: Request setting a SIM card public IP
description: "This API makes a SIM card reachable on the public internet by mapping a random public IP to the SIM card.\
\ \n The API will trigger an asynchronous operation called a SIM Card Action. The status of the SIM Card\
\ Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)\
\ API. \n Setting a Public IP to a SIM Card incurs a charge and will only succeed if the account has sufficient\
\ funds."
operationId: SetSimCardPublicIp
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
- name: region_code
in: query
description: The code of the region where the public IP should be assigned. A list of available regions can be found
at the regions endpoint
required: false
schema:
type: string
example: dc2
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/actions/set_standby:
post:
x-latency-category: background
summary: Request setting a SIM card to standby
description: 'The SIM card will be able to connect to the network once the process to set it to standby has been completed,
thus making it possible to consume data.
To set a SIM card to standby, it must be associated with SIM card group.
The API will trigger an asynchronous operation called a SIM Card Action. Transitioning to the standby state may take
a period of time. The status of the SIM Card Action can be followed through the [List SIM Card Action](https://developers.telnyx.com/api-reference/sim-card-actions/list-sim-card-actions)
API.
'
operationId: SetSimCardStandby
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'202':
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_SIMCardAction'
description: Action accepted. The response contains a SIM card action; poll GET /sim_card_actions/{id} with the
action id to track progress.
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/activation_code:
get:
summary: Get activation code for an eSIM
description: "It returns the activation code for an eSIM. \n This API is only available for eSIMs. If the given\
\ SIM is a physical SIM card, or has already been installed, an error will be returned.\n"
operationId: GetSimCardActivationCode
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardActivationCode'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/device_details:
get:
summary: Get SIM card device details
description: 'It returns the device details where a SIM card is currently being used.
'
operationId: GetSimCardDeviceDetails
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardDeviceDetails'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/public_ip:
get:
summary: Get SIM card public IP definition
description: 'It returns the public IP requested for a SIM card.
'
operationId: GetSimCardPublicIp
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/SIMCardId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SIMCardPublicIP'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sim_cards/{id}/wireless_connectivity_logs:
get:
operationId: GetWirelessConnectivityLogs
summary: List wireless connectivity logs
description: This API allows listing a paginated collection of Wireless Connectivity Logs associated with a SIM Card,
for troubleshooting purposes.
tags:
- SIM Cards
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- $ref: '#/components/parameters/SIMCardId'
responses:
'200':
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WirelessConnectivityLog'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/sip_registration_status:
get:
summary: SIP Registration Status
description: 'Returns the live SIP registration status for a Telnyx endpoint: whether it is currently registered, when
the current registration expires, and the last response Telnyx received from the registrar.
The endpoint supports three credential types, selected with the `credential_type` query parameter. Each type is keyed
by a different identifier:
| `credential_type` | Keyed by | Use case |
| --- | --- | --- |
| `uac_external_credential` | `connection_id` | A UAC (SIP attach) connection that registers to an external PBX. |
| `telephony_credential` | `username` | An ephemeral, one-time-use telephony credential. |
| `sip_credential_connection` | `username` | A traditional SIP credential connection that registers directly to Telnyx.
|
The authenticated account is taken from your API key; you can only read the registration status of connections and
credentials your account owns.'
operationId: GetSipRegistrationStatus
tags:
- UAC Connections
parameters:
- name: credential_type
in: query
required: true
description: The kind of credential to look up. `uac_external_credential` is keyed by `connection_id`; `telephony_credential`
and `sip_credential_connection` are keyed by `username`.
schema:
type: string
enum:
- uac_external_credential
- telephony_credential
- sip_credential_connection
- name: connection_id
in: query
required: false
description: Identifier of the UAC connection to look up. Required when `credential_type` is `uac_external_credential`.
schema:
type: string
example: '1234567890'
- name: username
in: query
required: false
description: SIP username to look up. Required when `credential_type` is `telephony_credential` or `sip_credential_connection`.
schema:
type: string
example: useralice12345
responses:
'200':
description: Registration status payload
content:
application/json:
schema:
$ref: '#/components/schemas/SipRegistrationStatus'
examples:
uac_credential:
summary: UAC external credential - registered
value:
connection_id: '1234567890'
connection_name: FreePBX UAC 1002
credential_type: uac_external_credential
credential_username: useralice12345
registered: true
sip_registration_status: registered
last_registration_response: 200 OK
sip_registration_details:
auth_retries: 0
expires: 1780404431
uptime: 1780401551699908
next_action_at: 1780414482
failures: 0
sip_uri_user_host: 1002@192.0.2.10
telephony_credential:
summary: Telephony credential - registered
value:
connection_id: '2845678901234567890'
connection_name: Softphone Credential Connection
credential_type: telephony_credential
credential_username: gencredq7f3k9x2
registered: true
sip_registration_status: registered
last_registration_response: 200 OK
sip_registration_details:
expires: 3600
ua_ip: 192.0.2.55
ua_port: 14934
transport: UDP
last_modified: '2026-06-15T11:23:13Z'
sip_credential_connection:
summary: SIP credential connection - registered
value:
connection_id: '1701773312243271678'
connection_name: Office Softphone
credential_type: sip_credential_connection
credential_username: office_softphone_01
registered: true
sip_registration_status: registered
last_registration_response: 200 OK
sip_registration_details:
expires: 3600
ua_ip: 192.0.2.88
ua_port: 5060
transport: TCP
last_modified: '2026-06-05T09:10:00Z'
not_registered:
summary: Not registered (trying)
value:
connection_id: '1701773312243271678'
connection_name: Office Softphone
credential_type: sip_credential_connection
credential_username: office_softphone_01
registered: false
sip_registration_status: trying
last_registration_response: null
sip_registration_details: {}
connection_disabled:
summary: Connection disabled
value:
connection_id: '1088210431736022026'
connection_name: Disabled Connection
credential_type: sip_credential_connection
credential_username: disabled_user_01
registered: false
sip_registration_status: connection_disabled
last_registration_response: null
sip_registration_details: {}
'400':
description: Missing or invalid query parameters. Returned when `credential_type` is unsupported, or when the identifier
required for the chosen `credential_type` (`connection_id` or `username`) is missing.
'401':
description: Missing or invalid API key
'403':
description: The connection or credential exists but is not owned by the authenticated account
'404':
description: No connection or credential matches the supplied identifier, or it has no known registration
/siprec_connectors:
post:
summary: Create a SIPREC connector
description: Creates a new SIPREC connector configuration.
operationId: createSiprecConnector
tags:
- SIPREC Connectors
requestBody:
$ref: '#/components/requestBodies/SiprecConnectorRequest'
responses:
'201':
description: Return details of the SIPREC connector.
content:
application/json:
schema:
$ref: '#/components/schemas/SiprecConnectorResponse'
'422':
$ref: '#/components/responses/siprec_siprec_UnprocessableEntityResponse'
default:
$ref: '#/components/responses/siprec_siprec_GenericErrorResponse'
/siprec_connectors/{connector_name}:
delete:
summary: Delete a SIPREC connector
description: Deletes the stored SIPREC connector with the specified connector name.
operationId: deleteSiprecConnector
tags:
- SIPREC Connectors
parameters:
- $ref: '#/components/parameters/SiprecConnectorName'
responses:
'204':
description: The SIPREC connector was deleted successfully.
'404':
$ref: '#/components/responses/siprec_siprec_NotFoundResponse'
default:
$ref: '#/components/responses/siprec_siprec_GenericErrorResponse'
get:
summary: Retrieve a SIPREC connector
description: Returns details of a stored SIPREC connector.
operationId: getSiprecConnector
tags:
- SIPREC Connectors
parameters:
- $ref: '#/components/parameters/SiprecConnectorName'
responses:
'200':
description: Return details of the SIPREC connector.
content:
application/json:
schema:
$ref: '#/components/schemas/SiprecConnectorResponse'
'404':
$ref: '#/components/responses/siprec_siprec_NotFoundResponse'
default:
$ref: '#/components/responses/siprec_siprec_GenericErrorResponse'
put:
summary: Update a SIPREC connector
description: Updates a stored SIPREC connector configuration.
operationId: updateSiprecConnector
tags:
- SIPREC Connectors
parameters:
- $ref: '#/components/parameters/SiprecConnectorName'
requestBody:
$ref: '#/components/requestBodies/SiprecConnectorRequest'
responses:
'200':
description: Return details of the SIPREC connector.
content:
application/json:
schema:
$ref: '#/components/schemas/SiprecConnectorResponse'
'404':
$ref: '#/components/responses/siprec_siprec_NotFoundResponse'
'422':
$ref: '#/components/responses/siprec_siprec_UnprocessableEntityResponse'
default:
$ref: '#/components/responses/siprec_siprec_GenericErrorResponse'
/speech-to-text/providers:
get:
summary: List supported STT providers
description: "Retrieve the canonical list of supported speech-to-text providers, models, accepted language codes, and\
\ the service types each model supports.\n\nService types:\n * `streaming` — standalone WebSocket transcription via\
\ `/speech-to-text/transcription`.\n * `file_based` — file-based transcription via `/ai/audio/transcriptions`.\n\
\ * `in_call` — live call transcription via Call Control `transcription_start`.\n * `ai_assistant` — STT configured\
\ on a Call Control AI Assistant via voice-assistant `TranscriptionConfig` (covers both live-streaming and non-streaming/batch\
\ models).\n\nUse this endpoint to discover which (provider, model) combinations are available for the surface you\
\ need, and which language codes each accepts. `auto` in a `languages` array indicates the provider performs language\
\ detection."
operationId: listSttProviders
servers:
- url: https://api.telnyx.com/v2
description: Telnyx API v2
tags:
- Speech To Text Capabilities
parameters:
- name: service_type
in: query
required: false
description: Filter to entries that support the given service type. For backward compatibility with the values that
briefly shipped before the product-aligned rename, the legacy aliases `file_transcription`, `in_call_transcription`,
and `ai_assistant_transcription` are silently accepted and normalized to `file_based`, `in_call`, and `ai_assistant`
respectively. The response always emits the canonical (post-rename) values.
schema:
$ref: '#/components/schemas/STTServiceType'
- name: provider
in: query
required: false
description: Filter to entries for a specific STT provider. The enum mirrors the providers advertised across the speech-to-text
spec (including `google` and `telnyx`, which are accepted as WebSocket transcription engines). A provider that has
no models currently registered for any service type will return an empty `data` array rather than an error.
schema:
type: string
enum:
- deepgram
- speechmatics
- assemblyai
- xai
- soniox
- parakeet
- humain
- reson8
- cohere
- azure
- openai
- google
- telnyx
responses:
'200':
description: List of supported STT providers and models.
content:
application/json:
schema:
$ref: '#/components/schemas/STTProvidersResponse'
'400':
description: Bad request — invalid filter value.
content:
application/json:
schema:
$ref: '#/components/schemas/speech-to-text_Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
'401':
description: Authentication failed — missing or invalid API key.
'422':
$ref: '#/components/responses/speech-to-text_UnprocessableEntityResponse'
x-latency-category: responsive
/speech-to-text/transcription:
get:
summary: Speech to text over WebSocket
description: 'Open a WebSocket connection to stream audio and receive transcriptions in real-time. Authentication is
provided via the standard `Authorization: Bearer ` header.
Supported engines: `Azure`, `Deepgram`, `Google`, `Telnyx`, `xAI`, `Speechmatics`, `Soniox`, `Parakeet`, `Humain`,
`Reson8`, `Cohere`.
**Connection flow:**
1. Open WebSocket with query parameters specifying engine, input format, and language.
2. Send binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`).
3. Receive JSON transcript frames with `transcript`, `is_final`, and `confidence` fields.
4. Close connection when done.'
operationId: TranscriptionOverWs
servers:
- url: wss://api.telnyx.com/v2
description: Telnyx API v2 (WebSocket)
tags:
- Speech To Text over WebSockets
parameters:
- $ref: '#/components/parameters/transcription_engine'
- $ref: '#/components/parameters/input_format'
- $ref: '#/components/parameters/sample_rate'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/interim_results'
- $ref: '#/components/parameters/model'
- $ref: '#/components/parameters/endpointing'
- $ref: '#/components/parameters/redact'
- $ref: '#/components/parameters/keyterm'
- $ref: '#/components/parameters/keywords'
requestBody:
description: Client sends binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`) over the
WebSocket. See `SttClientEvent` schema.
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/SttClientEvent'
responses:
'101':
description: 'WebSocket connection established. Communication proceeds via binary audio frames (client) and JSON
transcript frames (server).
**Client → Server:** Binary audio data (mp3, wav, linear16, or linear32, per `input_format`).
**Server → Client:** See `TranscriptFrame` and `SttErrorFrame` schemas.'
content:
application/json:
schema:
$ref: '#/components/schemas/SttServerEvent'
'200':
description: WebSocket upgrade successful — this response is not returned directly. See 101 for frame documentation.
'400':
description: Invalid parameters — engine not supported or missing required fields.
'401':
description: Authentication failed — missing or invalid Authorization header.
'422':
$ref: '#/components/responses/speech-to-text_UnprocessableEntityResponse'
x-latency-category: interactive
/spend_limits:
get:
summary: List spend limits
description: 'Returns one entry per product and period you can set a limit on, with the limit, the spend so far in the
period and whether the product is blocked. An entry without a limit is still listed (`limit: null`). When the spend
cannot be read, the entry is returned with `spend_usd: null` and `spend_error` set. The list is not paginated. Each
entry also lists the API key limits of its product and period in `credential_limits`, with each key''s spend and block,
and in `allocation` how much of the total limit they use.'
operationId: listSpendLimits
tags:
- Spend Limits
x-endpoint-cost: medium
x-latency-category: responsive
responses:
'200':
description: Spend limits, spend and blocks per product and period.
content:
application/json:
schema:
$ref: '#/components/schemas/SpendLimitListResponse'
examples:
daily_limit_set:
summary: A daily limit and no monthly limit
value:
data:
- record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit:
amount: '100'
unlimited: false
origin: self_service
updated_at: '2026-09-24T09:12:03.412Z'
effective_limit_usd: '100'
spend_usd: '37.41'
spend_error: null
blocked: false
block: null
- record_type: spend_limit
product: inference
product_name: Inference
period: monthly
period_start: '2026-09-01'
period_end: '2026-10-01'
limit: null
effective_limit_usd: null
spend_usd: '812.03'
spend_error: null
blocked: false
block: null
meta:
total_pages: 1
total_results: 2
page_number: 1
page_size: 2
blocked:
summary: Blocked by the daily limit
value:
data:
- record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit:
amount: '10'
unlimited: false
origin: self_service
updated_at: '2026-09-24T08:00:00Z'
effective_limit_usd: '10'
spend_usd: '12.80'
spend_error: null
blocked: true
block:
detected_at: '2026-09-24T08:41:17Z'
spend_usd: '10.20'
limit_usd: '10'
blocked_until: '2026-09-25'
- record_type: spend_limit
product: inference
product_name: Inference
period: monthly
period_start: '2026-09-01'
period_end: '2026-10-01'
limit: null
effective_limit_usd: null
spend_usd: '812.03'
spend_error: null
blocked: false
block: null
meta:
total_pages: 1
total_results: 2
page_number: 1
page_size: 2
api_key_limits:
summary: A daily total limit with two API key limits, one of them blocked
value:
data:
- record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-10-20'
period_end: '2026-10-21'
credential_id: null
limit:
amount: '1000.00'
unlimited: false
origin: self_service
updated_at: '2026-10-20T08:01:12Z'
effective_limit_usd: '1000.00'
spend_usd: '412.90'
spend_error: null
blocked: false
block: null
allocation:
total_limit_usd: '1000.00'
allocated_usd: '800.00'
unallocated_usd: '200.00'
over_allocated_usd: '0.00'
credential_limits:
- credential_id: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
limit:
amount: '300.00'
origin: self_service
updated_at: '2026-10-20T08:03:40Z'
spend_usd: '120.00'
spend_error: null
blocked: false
block: null
- credential_id: KEY01A0B0C0D0E0F0A1B1C1D1E1F1A2B2
limit:
amount: '500.00'
origin: operator
updated_at: '2026-10-19T17:44:02Z'
spend_usd: '510.30'
spend_error: null
blocked: true
block:
detected_at: '2026-10-20T11:02:19Z'
spend_usd: '503.10'
limit_usd: '500.00'
blocked_until: '2026-10-21'
- record_type: spend_limit
product: inference
product_name: Inference
period: monthly
period_start: '2026-10-01'
period_end: '2026-11-01'
credential_id: null
limit: null
effective_limit_usd: null
spend_usd: '8120.03'
spend_error: null
blocked: false
block: null
allocation: null
credential_limits: []
meta:
total_pages: 1
total_results: 2
page_number: 1
page_size: 2
'401':
description: Unauthorized. The request did not carry valid Telnyx API credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unauthorized:
summary: Missing or invalid credentials
value:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden. The caller's access policy does not allow this spend limits action.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
forbidden:
summary: Action not allowed
value:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
post:
summary: Create a spend limit
description: 'Sets a limit for a product and period that has none. Send exactly one of `amount` and `unlimited: true`.
The period''s spend is checked at once: if it is already above the new limit, the product is blocked immediately (`evaluation.blocked_now`).
Returns 409 when a limit already exists for the product and period; update it instead. With `credential_id`, the limit
applies to that API key only: it needs an `amount`, and the period''s API key limits cannot add up to more than the
total limit when the total has an amount.'
operationId: createSpendLimit
tags:
- Spend Limits
x-endpoint-cost: light
x-latency-category: responsive
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSpendLimitRequest'
examples:
amount:
summary: A daily limit of 100 USD
value:
product: inference
period: daily
amount: 100
reason: Team budget
unlimited:
summary: Explicitly no monthly limit
value:
product: inference
period: monthly
unlimited: true
api_key:
summary: A daily limit of 300 USD for one API key
value:
product: inference
period: daily
credential_id: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
amount: 300
reason: Staging key
responses:
'200':
description: The limit was created. `evaluation` says whether the change blocked the product.
content:
application/json:
schema:
$ref: '#/components/schemas/SpendLimitResponse'
examples:
created:
summary: Created, spend below the limit
value:
data:
record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit:
amount: '100'
unlimited: false
origin: self_service
updated_at: '2026-09-24T09:12:03.412Z'
effective_limit_usd: '100'
spend_usd: '37.41'
spend_error: null
blocked: false
block: null
evaluation:
spend_usd: '37.41'
released: false
blocked_now: false
still_over_limit: false
still_blocked_other_period: false
evaluation_deferred: false
blocked_now:
summary: 'Created below the current spend: blocked at once'
value:
data:
record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit:
amount: '20'
unlimited: false
origin: self_service
updated_at: '2026-09-24T09:12:03.412Z'
effective_limit_usd: '20'
spend_usd: '37.41'
spend_error: null
blocked: false
block: null
evaluation:
spend_usd: '37.41'
released: false
blocked_now: true
still_over_limit: false
still_blocked_other_period: false
evaluation_deferred: false
api_key_created:
summary: API key limit created, spend below the limit
value:
data:
record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-10-20'
period_end: '2026-10-21'
credential_id: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
limit:
amount: '300'
unlimited: false
origin: self_service
updated_at: '2026-10-20T08:03:40Z'
effective_limit_usd: '300'
spend_usd: '120.00'
spend_error: null
blocked: false
block: null
allocation:
total_limit_usd: '1000.00'
allocated_usd: '800.00'
unallocated_usd: '200.00'
over_allocated_usd: '0.00'
evaluation:
spend_usd: '120.00'
released: false
blocked_now: false
still_over_limit: false
still_blocked_other_period: false
account_blocked: false
evaluation_deferred: false
'400':
description: 'Bad request. The product does not support self-service spend limits, the period is invalid or not
available, not exactly one of `amount` and `unlimited` was sent, `amount` is negative, `reason` is longer than
500 characters, or the body has a field that is not listed. For an API key limit (`credential_id`): API key limits
are not available for the product or period, `credential_id` is invalid, `unlimited` was sent, the period already
has the maximum number of API key limits, or the period''s API key limits would add up to more than the total
limit. Creating a total limit below the sum of the period''s API key limits is refused too.'
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unsupported_product:
summary: Product without self-service spend limits
value:
errors:
- code: '10015'
title: Product does not support self-service spend limits
detail: Spend limits for this product cannot be managed through the API; contact support
invalid_period:
summary: Invalid period
value:
errors:
- code: '10015'
title: Invalid period
detail: period must be daily or monthly
invalid_limit:
summary: Invalid amount or unlimited
value:
errors:
- code: '10015'
title: Invalid override
detail: 'Exactly one of amount (>= 0) or unlimited: true must be given'
period_not_available:
summary: Product and period cannot be limited
value:
errors:
- code: '10015'
title: Spend limits are not available
detail: Spend limits are not available for inference (monthly)
reason_too_long:
summary: Reason too long
value:
errors:
- code: '10015'
title: Invalid reason
detail: reason must be at most 500 characters
unknown_field:
summary: Unknown field in the body
value:
errors:
- code: '10015'
title: Unknown fields
detail: 'Unknown field(s): user_id; the account is always the one you are authenticated as'
api_key_limits_not_available:
summary: API key limits not available for the product
value:
errors:
- code: '10015'
title: API key limits are not available
detail: API key limits are not available for inference
invalid_credential_id:
summary: Invalid credential_id
value:
errors:
- code: '10015'
title: Invalid credential_id
detail: credential_id must be 1 to 255 characters, not blank, and contain no control characters
api_key_limit_needs_amount:
summary: unlimited sent for an API key
value:
errors:
- code: '10015'
title: API key limits need an amount
detail: An API key limit is an amount in USD; it cannot be unlimited. Without an API key limit a key
is limited only by the total limit
too_many_api_key_limits:
summary: Too many API key limits
value:
errors:
- code: '10015'
title: Too many API key limits
detail: At most 100 API key limits per product and period (inference, daily); remove one first
allocation_exceeded:
summary: API key limits would exceed the total limit
value:
errors:
- code: '10015'
title: Limit exceeds the total limit
detail: The daily total limit for inference is 1000.00 USD and 800.00 USD is already allocated to API
key limits; this API key can be given at most 200.00 USD
'401':
description: Unauthorized. The request did not carry valid Telnyx API credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unauthorized:
summary: Missing or invalid credentials
value:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden. The caller's access policy does not allow this spend limits action.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
forbidden:
summary: Action not allowed
value:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'409':
description: Conflict. A limit already exists for the product and period, or for the API key.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
limit_exists:
summary: Limit already exists
value:
errors:
- code: '10015'
title: Limit already exists
detail: An active daily limit exists for inference; update it instead
api_key_limit_exists:
summary: API key limit already exists
value:
errors:
- code: '10015'
title: Limit already exists
detail: An active daily limit exists for inference and API key KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2; update
it instead
/spend_limits/{product}:
delete:
summary: Delete a spend limit
description: 'Removes the limit for the product and period. For `inference`, which has no default limit, the product
becomes unlimited for the period and the period''s block is lifted (`evaluation.released`). The response carries `limit:
null` and the `effective_limit_usd` that applies after the removal. Returns 404 when no limit is set. With the `credential_id`
query parameter, the request removes that API key''s limit for the period and lifts the key''s block in that period
at once. A block under the key''s limit in the other period stays (`evaluation.still_blocked_other_period`). Removing
the total limit leaves the API key limits in place.'
operationId: deleteSpendLimit
tags:
- Spend Limits
x-endpoint-cost: light
x-latency-category: responsive
parameters:
- name: product
in: path
required: true
description: Product the limit applies to, as returned in `product` by the list operation.
schema:
type: string
example: inference
- name: period
in: query
required: false
description: Limit period. Defaults to `daily`; send it explicitly.
schema:
$ref: '#/components/schemas/SpendLimitPeriod'
- name: credential_id
in: query
required: false
description: 'Identifier of one API key as recorded on usage, never the key''s secret, percent-encoded: the request
is then about that key''s limit. Absent means the total limit; present but blank is refused.'
schema:
type: string
minLength: 1
maxLength: 255
example: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
- name: reason
in: query
required: false
description: Why the limit is removed, kept for audit. At most 500 characters.
schema:
type: string
maxLength: 500
responses:
'200':
description: The limit was deleted. `evaluation` says whether a block was lifted.
content:
application/json:
schema:
$ref: '#/components/schemas/SpendLimitResponse'
examples:
deleted:
summary: 'Deleted while blocked: the daily block is lifted'
value:
data:
record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit: null
effective_limit_usd: null
spend_usd: '12.80'
spend_error: null
blocked: false
block: null
evaluation:
spend_usd: null
released: true
blocked_now: false
still_over_limit: false
still_blocked_other_period: false
evaluation_deferred: false
'400':
description: Bad request. The product does not support self-service spend limits, the period is invalid, or `credential_id`
is present but invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unsupported_product:
summary: Product without self-service spend limits
value:
errors:
- code: '10015'
title: Product does not support self-service spend limits
detail: Spend limits for this product cannot be managed through the API; contact support
invalid_period:
summary: Invalid period
value:
errors:
- code: '10015'
title: Invalid period
detail: period must be daily or monthly
invalid_credential_id:
summary: Invalid credential_id
value:
errors:
- code: '10015'
title: Invalid credential_id
detail: credential_id must be 1 to 255 characters, not blank, and contain no control characters
'401':
description: Unauthorized. The request did not carry valid Telnyx API credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unauthorized:
summary: Missing or invalid credentials
value:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden. The caller's access policy does not allow this spend limits action.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
forbidden:
summary: Action not allowed
value:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'404':
description: Not found. No spend limit is set for the product and period, or for the API key.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
limit_not_found:
summary: No limit for the product and period
value:
errors:
- code: '10005'
title: Limit not found
detail: No active daily limit for inference; nothing to delete
api_key_limit_not_found:
summary: No limit for the API key
value:
errors:
- code: '10005'
title: Limit not found
detail: No active daily limit for inference (API key KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2); nothing to
delete
patch:
summary: Update a spend limit
description: 'Replaces the value of the existing limit for the product and period. Send exactly one of `amount` and
`unlimited: true`. The period''s spend is checked at once: raising the limit above the spend lifts the period''s block
(`evaluation.released`), and lowering it below the spend blocks the product (`evaluation.blocked_now`). Returns 404
when no limit is set; create it instead. With the `credential_id` query parameter, the request changes that API key''s
limit; it needs an `amount`, and raising it is subject to the allocation rule.'
operationId: updateSpendLimit
tags:
- Spend Limits
x-endpoint-cost: light
x-latency-category: responsive
parameters:
- name: product
in: path
required: true
description: Product the limit applies to, as returned in `product` by the list operation.
schema:
type: string
example: inference
- name: period
in: query
required: false
description: Limit period. Defaults to `daily`; send it explicitly.
schema:
$ref: '#/components/schemas/SpendLimitPeriod'
- name: credential_id
in: query
required: false
description: 'Identifier of one API key as recorded on usage, never the key''s secret, percent-encoded: the request
is then about that key''s limit. Absent means the total limit; present but blank is refused.'
schema:
type: string
minLength: 1
maxLength: 255
example: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSpendLimitRequest'
examples:
amount:
summary: Raise the limit to 250 USD
value:
amount: 250
unlimited:
summary: Remove the cap but keep the limit
value:
unlimited: true
responses:
'200':
description: The limit was updated. `evaluation` says whether the change lifted or started a block.
content:
application/json:
schema:
$ref: '#/components/schemas/SpendLimitResponse'
examples:
released:
summary: 'Raised above the spend: the daily block is lifted'
value:
data:
record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit:
amount: '250'
unlimited: false
origin: self_service
updated_at: '2026-09-24T09:12:03.412Z'
effective_limit_usd: '250'
spend_usd: '37.41'
spend_error: null
blocked: false
block: null
evaluation:
spend_usd: '112.50'
released: true
blocked_now: false
still_over_limit: false
still_blocked_other_period: false
evaluation_deferred: false
still_blocked_other_period:
summary: Daily block lifted, still blocked by the monthly limit
value:
data:
record_type: spend_limit
product: inference
product_name: Inference
period: daily
period_start: '2026-09-24'
period_end: '2026-09-25'
limit:
amount: '250'
unlimited: false
origin: self_service
updated_at: '2026-09-24T09:12:03.412Z'
effective_limit_usd: '250'
spend_usd: '37.41'
spend_error: null
blocked: false
block: null
evaluation:
spend_usd: '112.50'
released: true
blocked_now: false
still_over_limit: false
still_blocked_other_period: true
evaluation_deferred: false
'400':
description: 'Bad request. The product does not support self-service spend limits, the period is invalid or not
available, not exactly one of `amount` and `unlimited` was sent, `amount` is negative, `reason` is longer than
500 characters, or the body has a field that is not listed. For an API key limit (`credential_id`): API key limits
are not available for the product or period, `credential_id` is invalid, `unlimited` was sent, or the period''s
API key limits would add up to more than the total limit. Lowering the total limit below the sum of the period''s
API key limits is refused too.'
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unsupported_product:
summary: Product without self-service spend limits
value:
errors:
- code: '10015'
title: Product does not support self-service spend limits
detail: Spend limits for this product cannot be managed through the API; contact support
invalid_period:
summary: Invalid period
value:
errors:
- code: '10015'
title: Invalid period
detail: period must be daily or monthly
invalid_limit:
summary: Invalid amount or unlimited
value:
errors:
- code: '10015'
title: Invalid override
detail: 'Exactly one of amount (>= 0) or unlimited: true must be given'
period_not_available:
summary: Product and period cannot be limited
value:
errors:
- code: '10015'
title: Spend limits are not available
detail: Spend limits are not available for inference (monthly)
reason_too_long:
summary: Reason too long
value:
errors:
- code: '10015'
title: Invalid reason
detail: reason must be at most 500 characters
unknown_field:
summary: Unknown field in the body
value:
errors:
- code: '10015'
title: Unknown fields
detail: 'Unknown field(s): user_id; the account is always the one you are authenticated as'
api_key_limits_not_available:
summary: API key limits not available for the product
value:
errors:
- code: '10015'
title: API key limits are not available
detail: API key limits are not available for inference
invalid_credential_id:
summary: Invalid credential_id
value:
errors:
- code: '10015'
title: Invalid credential_id
detail: credential_id must be 1 to 255 characters, not blank, and contain no control characters
api_key_limit_needs_amount:
summary: unlimited sent for an API key
value:
errors:
- code: '10015'
title: API key limits need an amount
detail: An API key limit is an amount in USD; it cannot be unlimited. Without an API key limit a key
is limited only by the total limit
allocation_exceeded:
summary: Raising an API key limit beyond the total limit
value:
errors:
- code: '10015'
title: Limit exceeds the total limit
detail: The daily total limit for inference is 1000.00 USD and 800.00 USD is allocated to API key limits;
this API key can be given at most 500.00 USD
total_below_allocation:
summary: Lowering the total limit below the API key limits
value:
errors:
- code: '10015'
title: Limit exceeds the total limit
detail: 800.00 USD of the daily inference limit is allocated to API key limits; the total can be at
least 800.00 USD
'401':
description: Unauthorized. The request did not carry valid Telnyx API credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
unauthorized:
summary: Missing or invalid credentials
value:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden. The caller's access policy does not allow this spend limits action.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
forbidden:
summary: Action not allowed
value:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'404':
description: Not found. No spend limit is set for the product and period, or for the API key.
content:
application/json:
schema:
$ref: '#/components/schemas/spend-limits_ErrorResponse'
examples:
limit_not_found:
summary: No limit for the product and period
value:
errors:
- code: '10005'
title: Limit not found
detail: No active daily limit for inference; create it instead
api_key_limit_not_found:
summary: No limit for the API key
value:
errors:
- code: '10005'
title: Limit not found
detail: No active daily limit for inference and API key KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2; create it
instead
/storage/buckets/{bucketName}/ssl_certificate:
delete:
summary: Remove SSL Certificate
deprecated: false
description: Deletes an SSL certificate and its matching secret.
operationId: RemoveStorageSSLCertificate
tags:
- Bucket SSL Certificate
parameters:
- name: bucketName
in: path
description: Bucket Name
required: true
example: ''
schema:
type: string
responses:
'200':
description: SSL Certificate Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SSLCertificate'
headers: {}
'401':
description: Unauthorized
'404':
description: Bucket or SSL certificate not found
'422':
description: Unprocessable Entity
get:
summary: Get Bucket SSL Certificate
deprecated: false
description: Returns the stored certificate detail of a bucket, if applicable.
operationId: GetStorageSSLCertificates
tags:
- Bucket SSL Certificate
parameters:
- name: bucketName
in: path
description: The name of the bucket
required: true
example: ''
schema:
type: string
responses:
'200':
description: SSL Certificate Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SSLCertificate'
headers: {}
'401':
description: Unauthorized
'404':
description: Bucket or SSL certificate not found
'422':
description: Unprocessable Entity
put:
summary: Add SSL Certificate
deprecated: false
description: Uploads an SSL certificate and its matching secret so that you can use Telnyx's storage as your CDN.
operationId: AddStorageSSLCertificate
tags:
- Bucket SSL Certificate
parameters:
- name: bucketName
in: path
description: The name of the bucket
required: true
example: ''
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
certificate:
type: string
format: binary
description: The SSL certificate file
example: ''
private_key:
type: string
format: binary
description: The private key file
example: ''
example:
certificate: certificate.pem
private_key: private_key.pem
responses:
'200':
description: SSL Certificate Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SSLCertificate'
headers: {}
'401':
description: Unauthorized
'404':
description: Bucket not found
'422':
description: Unprocessable Entity
/storage/buckets/{bucketName}/usage/api:
get:
summary: Get API Usage
deprecated: false
description: Returns the detail on API usage on a bucket of a particular time period, group by method category.
operationId: GetStorageAPIUsage
tags:
- Bucket Usage
parameters:
- name: bucketName
in: path
description: The name of the bucket
required: true
example: ''
schema:
type: string
- name: filter
in: query
required: true
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[start_time], filter[end_time]'
schema:
type: object
required:
- start_time
- end_time
properties:
start_time:
type: string
format: date-time
description: The start time of the period to filter the usage (ISO microsecond format)
end_time:
type: string
format: date-time
description: The end time of the period to filter the usage (ISO microsecond format)
additionalProperties: false
example:
start_time: '2020-01-01T00:00:00.000Z'
end_time: '2020-01-01T00:00:00.000Z'
responses:
'200':
description: Bucket Usage
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BucketAPIUsageResponse'
headers: {}
'401':
description: Unauthorized
'404':
description: Bucket not found
'422':
description: Unprocessable Entity
/storage/buckets/{bucketName}/usage/storage:
get:
summary: Get Bucket Usage
deprecated: false
description: Returns the amount of storage space and number of files a bucket takes up.
operationId: GetBucketUsage
tags:
- Bucket Usage
parameters:
- name: bucketName
in: path
description: The name of the bucket
required: true
example: ''
schema:
type: string
responses:
'200':
description: Bucket Storage Usage
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BucketUsage'
meta:
$ref: '#/components/schemas/PaginationMetaSimple'
headers: {}
'401':
description: Unauthorized
'404':
description: Bucket not found
'422':
description: Unprocessable Entity
/storage/buckets/{bucketName}/{objectName}/presigned_url:
post:
summary: Create Presigned Object URL
deprecated: false
description: "Returns a timed and authenticated URL to download (GET) or upload (PUT) an object. This is the equivalent\
\ to AWS S3’s “presigned” URL. Please note that Telnyx performs authentication differently from AWS S3 and you MUST\
\ NOT use the presign method of AWS s3api CLI or SDK to generate the presigned URL. \n\nRefer to: https://developers.telnyx.com/docs/cloud-storage/presigned-urls\n"
operationId: CreatePresignedObjectUrl
tags:
- Presigned Object URLs
parameters:
- name: bucketName
in: path
description: The name of the bucket
required: true
example: ''
schema:
type: string
- name: objectName
in: path
description: The name of the object
required: true
example: ''
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PresignedObjectUrlParams'
responses:
'200':
description: Presigned URL Object Response
content:
application/json:
schema:
$ref: '#/components/schemas/PresignedObjectUrl'
example:
content:
token: string
presigned_url: string
expires_at: '2024-01-23T18:10:02.574Z'
headers: {}
'401':
description: Unauthorized
'404':
description: Bucket or object not found
'422':
description: Unprocessable Entity
/storage/cloudfs:
get:
description: 'Lists the CloudFS filesystems for the authenticated user''s organization. Results use cursor-based pagination:
fetch the next page by passing `meta.cursors.after` as `page[after]`, or follow the `meta.next` URL.'
tags:
- cloudfs filesystems
summary: List CloudFS filesystems
operationId: ListCloudfsFilesystems
parameters:
- description: The number of filesystems to return per page. Values above 250 are treated as 250.
name: page[limit]
in: query
schema:
type: integer
minimum: 1
maximum: 250
default: 20
- description: Opaque cursor from a previous response's `meta.cursors.after`; returns the page after it. Mutually exclusive
with `page[before]`.
name: page[after]
in: query
schema:
type: string
- description: Opaque cursor from a previous response's `meta.cursors.before`; returns the page before it. Mutually
exclusive with `page[after]`.
name: page[before]
in: query
schema:
type: string
- description: Return only the filesystem whose name matches exactly.
name: filter[name]
in: query
schema:
type: string
- description: Return only filesystems with this status. Unrecognized values are ignored.
name: filter[status]
in: query
schema:
type: string
enum:
- provisioning
- ready
- needs_format
- deleting
- failed
- description: Return only filesystems in this region.
name: filter[region]
in: query
schema:
type: string
example: us-east-1
- description: 'Sort order for the results: a field name for ascending, or the field name prefixed with `-` for descending.'
name: sort
in: query
schema:
type: string
enum:
- created_at
- -created_at
- updated_at
- -updated_at
- name
- -name
default: -created_at
responses:
'200':
description: CloudFS filesystems retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CloudfsFilesystemListResponseWrapper'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — invalid `page[limit]`, malformed or conflicting cursor, or unsupported `sort`
value
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
post:
description: 'Creates a CloudFS filesystem. Provisioning is synchronous — typically a few seconds, up to a few minutes
— and the filesystem is returned with status `ready`, together with its S3 bucket and metadata connection details.
This response is the only time the filesystem''s `meta_token` — and the credential-bearing `meta_url` — are returned;
store them securely. If the token is lost, issue a new one with the rotate-meta-token action. Names are unique within
your organization: creating with an existing name returns a `422`. Requests are idempotent: retrying with the same
`Idempotency-Key` within 24 hours replays the original response instead of creating another filesystem.'
tags:
- cloudfs filesystems
summary: Create a CloudFS filesystem
operationId: CreateCloudfsFilesystem
parameters:
- description: 'Unique key that makes the request idempotent (1-255 characters: letters, numbers, `_`, and `-`). Retrying
with the same key within 24 hours replays the original response (marked with an `Idempotent-Replayed: true` header)
instead of repeating the action. Reusing a key with a different request returns a `422`; sending a key while the
original request is still being processed returns a `409`.'
name: Idempotency-Key
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 255
pattern: ^[A-Za-z0-9_-]+$
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCloudfsFilesystemRequest'
description: CloudFS filesystem creation request
required: true
responses:
'201':
description: CloudFS filesystem created successfully. This is the only response (besides rotate-meta-token) that
includes `meta_token`.
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
content:
application/json:
schema:
$ref: '#/components/schemas/CloudfsFilesystemResponseWrapper'
'400':
description: Bad request — malformed JSON, unknown field, or a missing or invalid `Idempotency-Key` header
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — a request with this `Idempotency-Key` is still being processed
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — missing or invalid `name` or `region`, a filesystem with this name already exists
for your organization, or the `Idempotency-Key` was already used for a different request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/cloudfs/{id}:
delete:
description: 'Permanently deletes a CloudFS filesystem, removing its S3 bucket and its metadata database. Deletion is
synchronous: the response returns the filesystem''s final state with status `deleted`. There is no restore. A filesystem
that is still `provisioning` returns a `409`. If the filesystem still contains data, the request may be rejected with
a `409` — drain the bucket and retry.'
tags:
- cloudfs filesystems
summary: Delete a CloudFS filesystem
operationId: DeleteCloudfsFilesystem
parameters:
- description: CloudFS filesystem ID
name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: CloudFS filesystem deleted; the returned filesystem has status `deleted`
content:
application/json:
schema:
$ref: '#/components/schemas/CloudfsFilesystemDetailResponseWrapper'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: CloudFS filesystem not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the filesystem is not in a state that allows deletion (for example, still `provisioning`),
or its bucket still contains data that must be drained first
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — `id` is not a valid UUID
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
get:
description: Retrieves a CloudFS filesystem by its ID. The returned `meta_url` omits the credential — the metadata token
is only ever returned by create and rotate-meta-token. A filesystem whose last lifecycle action failed includes a
customer-safe `error` message.
tags:
- cloudfs filesystems
summary: Get a CloudFS filesystem
operationId: GetCloudfsFilesystem
parameters:
- description: CloudFS filesystem ID
name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: CloudFS filesystem retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CloudfsFilesystemDetailResponseWrapper'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: CloudFS filesystem not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — `id` is not a valid UUID
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
patch:
description: Updates a CloudFS filesystem. Only `name` can be changed; other fields are immutable and unknown fields
are rejected with a `400`. Renaming to a name that already exists in your organization returns a `422`.
tags:
- cloudfs filesystems
summary: Update a CloudFS filesystem
operationId: UpdateCloudfsFilesystem
parameters:
- description: CloudFS filesystem ID
name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCloudfsFilesystemRequest'
description: CloudFS filesystem update request
required: true
responses:
'200':
description: CloudFS filesystem updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CloudfsFilesystemDetailResponseWrapper'
'400':
description: Bad request — malformed JSON, unknown or immutable field, or missing body
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: CloudFS filesystem not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — `id` is not a valid UUID, the new `name` is invalid, or a filesystem with that
name already exists
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/cloudfs/{id}/actions/rotate-meta-token:
post:
description: Issues a new metadata access token for the filesystem and returns the full filesystem, including the new
`meta_token` and credential-bearing `meta_url`. The previous token stops authenticating immediately; the metadata
database and S3 bucket are unchanged. The request takes no body. Allowed while the filesystem is `ready` or `needs_format`;
otherwise returns a `409`. Retrying with the same `Idempotency-Key` within 24 hours replays the original response
— including the same token — instead of rotating again.
tags:
- cloudfs filesystems
summary: Rotate the metadata token
operationId: RotateCloudfsMetaToken
parameters:
- description: CloudFS filesystem ID
name: id
in: path
required: true
schema:
type: string
format: uuid
- description: 'Unique key that makes the request idempotent (1-255 characters: letters, numbers, `_`, and `-`). Retrying
with the same key within 24 hours replays the original response (marked with an `Idempotent-Replayed: true` header)
instead of repeating the action. Reusing a key with a different request returns a `422`; sending a key while the
original request is still being processed returns a `409`.'
name: Idempotency-Key
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 255
pattern: ^[A-Za-z0-9_-]+$
responses:
'200':
description: New metadata token issued; the response includes the new `meta_token` and credential-bearing `meta_url`
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
content:
application/json:
schema:
$ref: '#/components/schemas/CloudfsFilesystemResponseWrapper'
'400':
description: Bad request — missing or invalid `Idempotency-Key` header
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: CloudFS filesystem not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the filesystem is not in a state that allows rotation (`status` is neither `ready` nor `needs_format`),
or a request with this `Idempotency-Key` is still being processed
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — `id` is not a valid UUID, or the `Idempotency-Key` was already used for a different
request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/kvs:
get:
description: Lists the KV namespaces for the authenticated user's organization. Results use page-based pagination (`page[number]`/`page[size]`).
tags:
- kv namespaces
summary: List KV namespaces
operationId: ListKvNamespaces
parameters:
- description: The page number to load.
name: page[number]
in: query
schema:
type: integer
minimum: 1
default: 1
- description: The size of the page. Values above 250 are treated as 250.
name: page[size]
in: query
schema:
type: integer
minimum: 1
maximum: 250
default: 20
responses:
'200':
description: KV namespaces retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/KvNamespaceListResponseWrapper'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
post:
description: 'Creates a new KV namespace. Provisioning is asynchronous: the namespace is returned with status `pending`
and becomes usable once it reaches `provision_ok`.'
tags:
- kv namespaces
summary: Create a KV namespace
operationId: CreateKvNamespace
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateKvNamespaceRequest'
description: KV namespace creation request
required: true
responses:
'201':
description: KV namespace created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/KvNamespaceResponseWrapper'
'400':
description: Bad request — missing or invalid `name`
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — a namespace with this name already exists for your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/kvs/{id}:
delete:
description: 'Deletes a KV namespace and all of the keys it contains. Deletion is asynchronous: the namespace is returned
with status `deleting`. Deleting a namespace whose deletion is already in progress returns a `409`.'
tags:
- kv namespaces
summary: Delete a KV namespace
operationId: DeleteKvNamespace
parameters:
- description: KV namespace ID
name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: KV namespace deletion initiated
content:
application/json:
schema:
$ref: '#/components/schemas/KvNamespaceResponseWrapper'
'400':
description: Bad request — `id` is not a valid UUID
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: KV namespace not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the namespace is already being deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
get:
description: Retrieves a KV namespace by its ID, including its provisioning status.
tags:
- kv namespaces
summary: Get a KV namespace
operationId: GetKvNamespace
parameters:
- description: KV namespace ID
name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: KV namespace retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/KvNamespaceResponseWrapper'
'400':
description: Bad request — `id` is not a valid UUID
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: KV namespace not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/kvs/{id}/keys:
get:
description: Lists the keys in a namespace. Returns key names and metadata only, never values. Results are paginated
with `limit` and an opaque `cursor`.
tags:
- kv keys
summary: List keys
operationId: ListKvKeys
parameters:
- description: KV namespace ID
name: id
in: path
required: true
schema:
type: string
format: uuid
- description: Return only keys that start with this prefix.
name: prefix
in: query
schema:
type: string
- description: Maximum number of keys to return. Values above 1000 are treated as 1000.
name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 1000
default: 1000
- description: Opaque pagination cursor from a previous response's `meta.cursor`.
name: cursor
in: query
schema:
type: string
responses:
'200':
description: Keys retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/KvKeyListResponseWrapper'
'400':
description: Bad request — `id` is not a valid UUID, or `limit` is not a positive integer
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: KV namespace not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the namespace is not ready (`status` is not `provision_ok`)
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/kvs/{id}/keys/{key}:
delete:
description: 'Deletes a key. Idempotent: deleting a key that does not exist still succeeds. The namespace itself must
exist and be provisioned.'
tags:
- kv keys
summary: Delete a key
operationId: DeleteKvKey
parameters:
- description: KV namespace ID
name: id
in: path
required: true
schema:
type: string
format: uuid
- description: 'Key name. Allowed characters: `a-z A-Z 0-9 - _ / = .`; maximum 256 characters; names starting with `_`
are reserved for system use. May contain `/`. When calling the HTTP API directly, URL-encode the key so the whole
string is treated as one key (for example `user/1` -> `user%2F1`). SDK users should pass the key raw - SDKs URL-encode
path parameters automatically.'
name: key
in: path
required: true
schema:
type: string
maxLength: 256
pattern: ^[-/_=.a-zA-Z0-9]+$
responses:
'200':
description: Key deleted (returned even if the key did not exist)
'400':
description: Bad request — invalid `id` or key name
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: KV namespace not found (a missing key is not an error)
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the namespace is not ready (`status` is not `provision_ok`)
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
get:
description: Returns the raw stored value for a key. The response body is the value exactly as it was written; the `Content-Type`
header echoes the value's stored content type (defaults to `application/octet-stream`).
tags:
- kv keys
summary: Get a key's value
operationId: GetKvKey
parameters:
- description: KV namespace ID
name: id
in: path
required: true
schema:
type: string
format: uuid
- description: 'Key name. Allowed characters: `a-z A-Z 0-9 - _ / = .`; maximum 256 characters; names starting with `_`
are reserved for system use. May contain `/`. When calling the HTTP API directly, URL-encode the key so the whole
string is treated as one key (for example `user/1` -> `user%2F1`). SDK users should pass the key raw - SDKs URL-encode
path parameters automatically.'
name: key
in: path
required: true
schema:
type: string
maxLength: 256
pattern: ^[-/_=.a-zA-Z0-9]+$
responses:
'200':
description: Value retrieved successfully. The `Content-Type` header is the value's stored content type (defaults
to `application/octet-stream`).
content:
application/octet-stream:
schema:
type: string
format: binary
'400':
description: Bad request — invalid `id` or key name
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Key or namespace not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the namespace is not ready (`status` is not `provision_ok`)
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
put:
description: Creates or replaces the value for a key. The request body is stored verbatim as the value — no base64,
no JSON envelope — up to 1 MiB. The request's `Content-Type` header is stored with the value and echoed back on retrieval.
Returns `201` when the key is created and `200` when an existing key is updated.
tags:
- kv keys
summary: Set a key's value
operationId: PutKvKey
parameters:
- description: KV namespace ID
name: id
in: path
required: true
schema:
type: string
format: uuid
- description: 'Key name. Allowed characters: `a-z A-Z 0-9 - _ / = .`; maximum 256 characters; names starting with `_`
are reserved for system use. May contain `/`. When calling the HTTP API directly, URL-encode the key so the whole
string is treated as one key (for example `user/1` -> `user%2F1`). SDK users should pass the key raw - SDKs URL-encode
path parameters automatically.'
name: key
in: path
required: true
schema:
type: string
maxLength: 256
pattern: ^[-/_=.a-zA-Z0-9]+$
- description: Time-to-live in seconds. When set, the key expires and is deleted after this duration. Requires a namespace
provisioned with TTL support; namespaces without it return a `409`.
name: ttl_secs
in: query
schema:
type: integer
format: int64
minimum: 1
maximum: 9223372036
requestBody:
content:
application/octet-stream:
schema:
type: string
format: binary
description: Raw value bytes, stored verbatim.
example: my-value
description: 'The value to store, sent as the raw request body. Maximum size: 1 MiB (1048576 bytes).'
required: true
responses:
'200':
description: Key updated
'201':
description: Key created
'400':
description: Bad request — invalid `id`, key name, or request body
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: KV namespace not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the namespace is not ready (`status` is not `provision_ok`), or `ttl_secs` was set on a
namespace without TTL support
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'413':
description: Payload too large — the value exceeds 1 MiB
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable entity — `ttl_secs` is not a positive integer within range, or the unsupported `ttl`
parameter was used
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/migration_source_coverage:
get:
summary: List Migration Source coverage
deprecated: false
description: List the external storage providers and regions supported as migration sources.
operationId: ListMigrationSourceCoverage
tags:
- Data Migration
parameters: []
responses:
'200':
description: List Migrations Source Coverage Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MigrationSourceCoverageParams'
meta:
$ref: '#/components/schemas/PaginationMetaSimple'
headers: {}
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
/storage/migration_sources:
get:
summary: List all Migration Sources
deprecated: false
description: List the migration sources configured on your account. A migration source is an external storage bucket
from which data can be migrated into Telnyx Cloud Storage.
operationId: ListMigrationSources
tags:
- Data Migration
parameters: []
responses:
'200':
description: List Migration Sources Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MigrationSourceParams'
meta:
$ref: '#/components/schemas/PaginationMetaSimple'
headers: {}
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
post:
summary: Create a Migration Source
deprecated: false
description: Create a source from which data can be migrated from.
operationId: CreateMigrationSource
tags:
- Data Migration
parameters: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MigrationSourceParams'
example:
provider: aws
source_region: string
provider_auth:
access_key: string
secret_access_key: string
bucket_name: string
responses:
'200':
description: Create Migration Source Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MigrationSourceParams'
example:
data:
id: string
provider: aws
source_region: string
provider_auth:
access_key: string
secret_access_key: string
bucket_name: string
headers: {}
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
/storage/migration_sources/{id}:
delete:
summary: Delete a Migration Source
deprecated: false
description: Delete a migration source configuration.
operationId: DeleteMigrationSource
tags:
- Data Migration
parameters:
- name: id
in: path
description: Unique identifier for the data migration source.
required: true
example: ''
schema:
type: string
responses:
'200':
description: Create Migration Source Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MigrationSourceParams'
example:
data:
id: string
provider: aws
source_region: string
provider_auth:
access_key: string
secret_access_key: string
bucket_name: string
headers: {}
'401':
description: Unauthorized
'404':
description: Migration source not found
'422':
description: Unprocessable Entity
get:
summary: Get a Migration Source
deprecated: false
description: Retrieve the details of a specific migration source.
operationId: GetMigrationSource
tags:
- Data Migration
parameters:
- name: id
in: path
description: Unique identifier for the data migration source.
required: true
example: ''
schema:
type: string
responses:
'200':
description: Create Migration Source Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MigrationSourceParams'
example:
data:
id: string
provider: aws
source_region: string
provider_auth:
access_key: string
secret_access_key: string
bucket_name: string
headers: {}
'401':
description: Unauthorized
'404':
description: Migration source not found
'422':
description: Unprocessable Entity
/storage/migrations:
get:
summary: List all Migrations
deprecated: false
description: Retrieve a list of the storage migrations on your account.
operationId: ListMigrations
tags:
- Data Migration
parameters: []
responses:
'200':
description: List Migrations Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MigrationParams'
meta:
$ref: '#/components/schemas/PaginationMetaSimple'
headers: {}
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
post:
summary: Create a Migration
deprecated: false
description: Initiate a migration of data from an external provider into Telnyx Cloud Storage. Currently, only S3 is
supported.
operationId: CreateMigration
tags:
- Data Migration
parameters: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MigrationParams'
responses:
'200':
description: Create Migration Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MigrationParams'
headers: {}
'401':
description: Unauthorized
'422':
description: Unprocessable Entity
/storage/migrations/{id}:
get:
summary: Get a Migration
deprecated: false
description: Retrieve the details and status of a specific storage migration.
operationId: GetMigration
tags:
- Data Migration
parameters:
- name: id
in: path
description: Unique identifier for the data migration.
required: true
example: ''
schema:
type: string
responses:
'200':
description: Create Migration Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MigrationParams'
headers: {}
'401':
description: Unauthorized
'404':
description: Migration not found
'422':
description: Unprocessable Entity
/storage/migrations/{id}/actions/stop:
post:
summary: Stop a Migration
deprecated: false
description: Stops the specified in-progress storage migration and returns the updated migration.
operationId: StopMigration
tags:
- Data Migration
parameters:
- name: id
in: path
description: Unique identifier for the data migration.
required: true
example: ''
schema:
type: string
responses:
'200':
description: Create Migration Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MigrationParams'
headers: {}
'401':
description: Unauthorized
'404':
description: Migration not found
'422':
description: Unprocessable Entity
/storage/sqldbs:
get:
description: Lists the SQL databases for the authenticated user's organization. Results use page-based pagination (`page[number]`/`page[size]`)
and can be filtered and sorted.
tags:
- sql databases
summary: List SQL databases
operationId: ListSqlDatabases
parameters:
- description: The page number to load.
name: page[number]
in: query
schema:
type: integer
minimum: 1
default: 1
- description: The size of the page. Values above 250 are treated as 250.
name: page[size]
in: query
schema:
type: integer
minimum: 1
maximum: 250
default: 20
- description: Filter by exact name match.
name: filter[name]
in: query
schema:
type: string
- description: Filter by provisioning status.
name: filter[status]
in: query
schema:
type: string
enum:
- pending
- provision_ok
- provision_failed
- deleting
- delete_failed
- description: Sort field; prefix with `-` for descending order.
name: sort
in: query
schema:
type: string
enum:
- name
- -name
- status
- -status
- created_at
- -created_at
default: -created_at
responses:
'200':
description: SQL databases retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SqlDatabaseListResponseWrapper'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Validation error — an unsupported `sort` or `filter` value
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
post:
description: 'Creates a new SQL database. Provisioning is asynchronous: the database is returned with status `pending`
and becomes usable once it reaches `provision_ok`.'
tags:
- sql databases
summary: Create a SQL database
operationId: CreateSqlDatabase
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSqlDatabaseRequest'
description: SQL database creation request
required: true
responses:
'201':
description: SQL database created successfully (status `pending`)
content:
application/json:
schema:
$ref: '#/components/schemas/SqlDatabaseResponseWrapper'
'400':
description: Bad request — the request body is malformed
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — a database with this name already exists for your organization
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Validation error — `name` is missing or not a valid database name
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/sqldbs/{id}:
delete:
description: Deletes a SQL database and all of the data it holds. Deletion is asynchronous and returns `202` with an
empty body — the record is not removed synchronously. Poll `GET /storage/sqldbs/{id}`, which returns `404` once the
database has been purged; there is no durable `deleted` state. A database still bound by a function is refused with
`409` unless `force=true`.
tags:
- sql databases
summary: Delete a SQL database
operationId: DeleteSqlDatabase
parameters:
- description: SQL database ID
name: id
in: path
required: true
schema:
type: string
format: uuid
- description: Delete the database even when functions still bind it. Their bindings stop resolving.
name: force
in: query
schema:
type: boolean
default: false
responses:
'202':
description: Accepted — deletion runs asynchronously. The body is empty; poll `GET /storage/sqldbs/{id}` until it
returns `404`.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: SQL database not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the database is already being deleted, or is still bound by one or more functions
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Validation error — `id` is not a valid identifier
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
'503':
description: Cannot verify whether the database is still in use; retry, or pass `force=true`
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
get:
description: Retrieves a SQL database by its ID, including its provisioning status.
tags:
- sql databases
summary: Get a SQL database
operationId: GetSqlDatabase
parameters:
- description: SQL database ID
name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'200':
description: SQL database retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SqlDatabaseResponseWrapper'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: SQL database not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Validation error — `id` is not a valid identifier
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/storage/sqldbs/{id}/actions/query:
post:
description: Runs SQL against the database and returns the resulting rows — empty for statements that return none, such
as DDL. Bind positional `?` placeholders with `params` rather than interpolating values into the SQL string.
tags:
- sql databases
summary: Run SQL against a SQL database
operationId: QuerySqlDatabase
parameters:
- description: SQL database ID
name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SqlDatabaseQueryRequest'
description: The SQL to run, and any positional bind parameters
required: true
responses:
'200':
description: The SQL result
content:
application/json:
schema:
$ref: '#/components/schemas/SqlDatabaseQueryResponseWrapper'
'400':
description: Bad request — the request body is malformed
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: SQL database not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'409':
description: Conflict — the database is not ready yet. This is transient; retry once it reaches `provision_ok`.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'413':
description: The SQL body exceeds the maximum size (8 MiB)
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: 'Validation error — an invalid `id`, empty `sql`, an unsupported bind parameter, the wrong number of
bind parameters for the placeholders in `sql`, or a SQL error raised by the database. Also returned for a script
over roughly 4 MiB, whose detail ends in `stream too large`: that transport ceiling is reached before the 8 MiB
`413`, so ~4 MiB is the size to plan against'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorResponse'
/sub_number_orders:
get:
summary: List sub number orders
description: Get a paginated list of sub number orders.
operationId: ListSubNumberOrders
tags:
- Phone Number Orders
x-group-parameters: 'true'
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[status], filter[order_request_id],
filter[country_code], filter[phone_number_type], filter[phone_numbers_count], filter[include_phone_numbers]'
schema:
type: object
properties:
status:
type: string
description: Filter sub number orders by status.
order_request_id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c293
description: ID of the number order the sub number order belongs to
country_code:
type: string
example: US
description: ISO alpha-2 country code.
phone_number_type:
type: string
example: local
description: Phone Number Type
phone_numbers_count:
type: integer
example: 1
description: Amount of numbers in the sub number order
include_phone_numbers:
type: boolean
default: false
description: Include the first 50 phone number objects in the results, including their per-number regulatory
requirement statuses
responses:
'200':
description: Successful response with a list of sub number orders.
content:
application/json:
schema:
type: object
title: List Sub Number Orders Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/numbers_SubNumberOrder'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/sub_number_orders/report:
post:
summary: Create a sub number orders report
description: Create a CSV report for sub number orders. The report will be generated asynchronously and can be downloaded
once complete.
operationId: CreateSubNumberOrdersReport
tags:
- Phone Number Orders
x-endpoint-cost: medium
x-latency-category: background
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSubNumberOrdersReportRequest'
responses:
'202':
description: Report generation accepted. Poll GET /sub_number_orders/report/{report_id} with the returned report
id until the report is ready.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SubNumberOrdersReport'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
/sub_number_orders/report/{report_id}:
get:
summary: Retrieve a sub number orders report
description: Get the status and details of a sub number orders report.
operationId: GetSubNumberOrdersReport
tags:
- Phone Number Orders
x-endpoint-cost: light
parameters:
- in: path
name: report_id
schema:
type: string
format: uuid
required: true
description: The unique identifier of the sub number orders report
example: 12ade33a-21c0-473b-b055-b3c836e1c293
responses:
'200':
description: Sub number orders report response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SubNumberOrdersReport'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
x-latency-category: responsive
/sub_number_orders/report/{report_id}/download:
get:
summary: Download a sub number orders report
description: Download the CSV file for a completed sub number orders report. The report status must be 'success' before
the file can be downloaded.
operationId: DownloadSubNumberOrdersReport
tags:
- Phone Number Orders
x-endpoint-cost: light
x-latency-category: background
parameters:
- in: path
name: report_id
schema:
type: string
format: uuid
required: true
description: The unique identifier of the sub number orders report
example: 12ade33a-21c0-473b-b055-b3c836e1c293
responses:
'200':
description: CSV file download
content:
text/csv:
schema:
type: string
format: binary
example: 'id,order_request_id,is_block_sub_number_order,status,phone_number_type,requirements_met,phone_numbers_count,country_code,user_id,customer_reference,created_at,updated_at
1758d6ed-61a0-4d7a-bf57-b5dced413d33,f486fc2c-4fdf-4849-930d-b3045373e839,False,success,local,True,1,US,0d7ef697-df19-413a-b724-56b0539f5397,STRING,2025-05-23
14:33:12.376686,2025-05-23 14:33:15.624916'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity'
'500':
$ref: '#/components/responses/numbers_GenericErrorResponse'
/sub_number_orders/{id}/requirement_group:
post:
summary: Update requirement group for a sub number order
operationId: updateSubNumberOrderRequirementGroup
tags:
- Requirement Groups
parameters:
- name: id
in: path
description: The ID of the sub number order
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- requirement_group_id
properties:
requirement_group_id:
type: string
format: uuid
description: The ID of the requirement group to associate
example:
requirement_group_id: a4b201f9-8646-4e54-a7d2-b2e403eeaf8c
responses:
'200':
description: Sub number order requirement group updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SubNumberOrderRequirementGroupResponse'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
description: Associates an existing requirement group with the specified sub number order. The response contains the
updated sub number order requirement-group relationship.
/sub_number_orders/{sub_number_order_id}:
get:
summary: Retrieve a sub number order
description: Returns the details of an existing sub number order, with support for filtering.
operationId: GetSubNumberOrder
tags:
- Phone Number Orders
parameters:
- name: sub_number_order_id
in: path
description: The sub number order ID.
required: true
schema:
type: string
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[include_phone_numbers]'
schema:
type: object
properties:
include_phone_numbers:
type: boolean
default: false
description: Include the first 50 phone number objects in the results
responses:
'200':
description: Successful response with details about a sub number order.
content:
application/json:
schema:
type: object
title: Sub Number Order Response
properties:
data:
$ref: '#/components/schemas/numbers_SubNumberOrder'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update a sub number order's requirements
description: Updates the requirements of an existing sub number order and returns the updated order.
operationId: UpdateSubNumberOrder
tags:
- Phone Number Orders
parameters:
- name: sub_number_order_id
in: path
description: The sub number order ID.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubNumberOrderRequest'
responses:
'200':
description: Successful response with details about a sub number order.
content:
application/json:
schema:
type: object
title: Sub Number Order Response
properties:
data:
$ref: '#/components/schemas/numbers_SubNumberOrder'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/sub_number_orders/{sub_number_order_id}/cancel:
patch:
summary: Cancel a sub number order
description: Allows you to cancel a sub number order in 'pending' status.
operationId: CancelSubNumberOrder
tags:
- Phone Number Orders
parameters:
- name: sub_number_order_id
in: path
description: The ID of the sub number order.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a sub number order.
content:
application/json:
schema:
type: object
title: Sub Number Order Response
properties:
data:
$ref: '#/components/schemas/numbers_SubNumberOrder'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/sub_number_orders_report:
post:
summary: Create a sub number orders report
description: Create a CSV report for sub number orders. The report will be generated asynchronously and can be downloaded
once complete.
operationId: CreateSubNumberOrdersReport
tags:
- Phone Number Orders
x-endpoint-cost: medium
x-latency-category: background
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSubNumberOrdersReportRequest'
responses:
'202':
description: Report generation accepted. Poll GET /sub_number_orders_report/{report_id} with the returned report
id until the report is ready.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SubNumberOrdersReport'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/sub_number_orders_report/{report_id}:
get:
summary: Retrieve a sub number orders report
description: Get the status and details of a sub number orders report.
operationId: GetSubNumberOrdersReport
tags:
- Phone Number Orders
x-endpoint-cost: light
parameters:
- in: path
name: report_id
schema:
type: string
format: uuid
required: true
description: The unique identifier of the sub number orders report
example: 12ade33a-21c0-473b-b055-b3c836e1c293
responses:
'200':
description: Sub number orders report response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SubNumberOrdersReport'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/sub_number_orders_report/{report_id}/download:
get:
summary: Download a sub number orders report
description: Download the CSV file for a completed sub number orders report. The report status must be 'success' before
the file can be downloaded.
operationId: DownloadSubNumberOrdersReport
tags:
- Phone Number Orders
x-endpoint-cost: light
x-latency-category: background
parameters:
- in: path
name: report_id
schema:
type: string
format: uuid
required: true
description: The unique identifier of the sub number orders report
example: 12ade33a-21c0-473b-b055-b3c836e1c293
responses:
'200':
description: CSV file download
content:
text/csv:
schema:
type: string
format: binary
example: 'id,order_request_id,is_block_sub_number_order,status,phone_number_type,requirements_met,phone_numbers_count,country_code,user_id,customer_reference,created_at,updated_at
1758d6ed-61a0-4d7a-bf57-b5dced413d33,f486fc2c-4fdf-4849-930d-b3045373e839,False,success,local,True,1,US,0d7ef697-df19-413a-b724-56b0539f5397,STRING,2025-05-23
14:33:12.376686,2025-05-23 14:33:15.624916'
'400':
$ref: '#/components/responses/numbers_BadRequestResponse_73c9788e53'
'401':
$ref: '#/components/responses/numbers_UnauthorizedResponse_73c9788e53'
'404':
$ref: '#/components/responses/numbers_NotFoundResponse_73c9788e53'
'422':
$ref: '#/components/responses/numbers_UnprocessableEntity_73c9788e53'
'500':
$ref: '#/components/responses/GenericErrorResponse'
/tailscale_subnet_routers:
get:
summary: List all Tailscale Subnet Routers
description: Returns a paginated list of the Tailscale Subnet Routers on the account, with support for filtering by
Network.
operationId: ListTailscaleSubnetRouters
tags:
- Tailscale Subnet Routers
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]'
schema:
type: object
properties:
network_id:
type: string
example: 0de011ae-ee53-4df4-ba96-754728eb5aad
description: The id of the Network to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TailscaleSubnetRouter'
meta:
$ref: '#/components/schemas/PaginationMeta'
example:
data:
- id: 5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21
record_type: tailscale_subnet_router
name: tailnet-ashburn
network_id: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code: ashburn-va
advertised_routes:
- 172.27.0.0/24
status: provisioned
customer_address: 172.27.254.1
device_id: n5c6f0a7e1CNTRL
tailnet_name: acme.example
tailscale_ips:
- 100.101.2.30
- fd7a:115c:a1e0::2a
created_at: '2026-10-13T15:04:05.123456Z'
updated_at: '2026-10-13T15:09:41.654321Z'
meta:
total_pages: 1
total_results: 1
page_number: 1
page_size: 25
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a Tailscale Subnet Router
description: Creates a Tailscale Subnet Router on a Network and enrolls it in the user's tailnet with the auth key.
The response returns the router with `status` `provisioning`. Poll `GET /tailscale_subnet_routers/{id}` until it is
`provisioned`. Then approve its routes in the tailnet, unless an auto-approver covers them.
operationId: CreateTailscaleSubnetRouter
tags:
- Tailscale Subnet Routers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TailscaleSubnetRouterCreate'
example:
name: tailnet-ashburn
network_id: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code: ashburn-va
advertised_routes:
- 172.27.0.0/24
auth_key: tskey-auth-k1AbCdEfGh2IjKlMnOpQrStUv
responses:
'200':
description: Successful response. The router is created and provisioning has started.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TailscaleSubnetRouter'
example:
data:
id: 5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21
record_type: tailscale_subnet_router
name: tailnet-ashburn
network_id: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code: ashburn-va
advertised_routes:
- 172.27.0.0/24
status: provisioning
customer_address: 172.27.254.1
device_id: null
tailnet_name: null
tailscale_ips: []
created_at: '2026-10-13T15:04:05.123456Z'
updated_at: '2026-10-13T15:04:05.123456Z'
'400':
description: 'Bad request: the body failed validation. `detail` says what failed, for example `Routes must exclude
default, local, and Tailscale ranges.` or `The request contains unknown or read-only fields.`; a missing parameter
or an unknown `network_id` or `region_code` names the field in `source.pointer`.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: Routes must exclude default, local, and Tailscale ranges.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
'422':
description: 'Unprocessable entity: an advertised route overlaps the addresses reserved for routers, `172.27.254.0/24`
and `198.18.0.0/20`. The body is the generic error; it does not name the route.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
default:
$ref: '#/components/responses/GenericErrorResponse'
/tailscale_subnet_routers/{id}:
delete:
summary: Delete a Tailscale Subnet Router
description: Removes the router from the Network and logs it out of the tailnet. The response returns the router with
`status` `deleting`. The record disappears once removal completes. A machine entry can remain in the tailnet's admin
console until it is removed there.
operationId: DeleteTailscaleSubnetRouter
tags:
- Tailscale Subnet Routers
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response. Removal has started.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TailscaleSubnetRouter'
example:
data:
id: 5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21
record_type: tailscale_subnet_router
name: tailnet-ashburn
network_id: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code: ashburn-va
advertised_routes:
- 172.27.0.0/24
status: deleting
customer_address: 172.27.254.1
device_id: n5c6f0a7e1CNTRL
tailnet_name: acme.example
tailscale_ips:
- 100.101.2.30
- fd7a:115c:a1e0::2a
created_at: '2026-10-13T15:04:05.123456Z'
updated_at: '2026-10-14T10:30:12.000000Z'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
'409':
description: Conflict. The router is `provisioning` or `deleting`, or another operation holds it. Wait for the current
operation to finish.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Retrieve a Tailscale Subnet Router
description: Returns the details of a single Tailscale Subnet Router by its identifier, including its enrollment state.
operationId: GetTailscaleSubnetRouter
tags:
- Tailscale Subnet Routers
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TailscaleSubnetRouter'
example:
data:
id: 5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21
record_type: tailscale_subnet_router
name: tailnet-ashburn
network_id: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code: ashburn-va
advertised_routes:
- 172.27.0.0/24
status: provisioned
customer_address: 172.27.254.1
device_id: n5c6f0a7e1CNTRL
tailnet_name: acme.example
tailscale_ips:
- 100.101.2.30
- fd7a:115c:a1e0::2a
created_at: '2026-10-13T15:04:05.123456Z'
updated_at: '2026-10-13T15:09:41.654321Z'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
default:
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update a Tailscale Subnet Router
description: 'Renames the router, changes its advertised routes, or retries a failed enrollment. Any change queues a
new provisioning run and returns the router with `status` `provisioning`. The router keeps its machine identity on
the tailnet. Send an empty object to retry a `failed` router with its stored auth key. Include a new `auth_key` only
while the router has never enrolled. The router''s Network and region cannot change: create a new router instead.'
operationId: UpdateTailscaleSubnetRouter
tags:
- Tailscale Subnet Routers
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TailscaleSubnetRouterUpdate'
example:
advertised_routes:
- 172.27.0.0/24
- 172.27.1.0/24
responses:
'200':
description: Successful response. The change is queued and provisioning has started.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TailscaleSubnetRouter'
example:
data:
id: 5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21
record_type: tailscale_subnet_router
name: tailnet-ashburn
network_id: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code: ashburn-va
advertised_routes:
- 172.27.0.0/24
- 172.27.1.0/24
status: provisioning
customer_address: 172.27.254.1
device_id: n5c6f0a7e1CNTRL
tailnet_name: acme.example
tailscale_ips:
- 100.101.2.30
- fd7a:115c:a1e0::2a
created_at: '2026-10-13T15:04:05.123456Z'
updated_at: '2026-10-14T09:12:00.000000Z'
'400':
description: 'Bad request: the body failed validation. `detail` says what failed, for example `Routes must exclude
default, local, and Tailscale ranges.` or `The request contains unknown or read-only fields.`; a missing parameter
or an unknown `network_id` or `region_code` names the field in `source.pointer`.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: Routes must exclude default, local, and Tailscale ranges.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
'409':
description: 'Conflict: the router is `provisioning` or `deleting`, or another operation holds it. Wait for the
current operation to finish. The body carries the generic bad-request error.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
'422':
description: 'Unprocessable entity: an advertised route overlaps the reserved ranges, the body carries an unknown
or read-only field such as `network_id`, or `auth_key` is sent for a router that has already enrolled. The body
is the generic error.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
default:
$ref: '#/components/responses/GenericErrorResponse'
/telephony_credentials:
get:
description: Returns a paginated list of the on-demand telephony credentials on your account, with support for filtering.
summary: List all credentials
operationId: FindTelephonyCredentials
tags:
- Credentials
x-group-parameters: 'true'
parameters:
- $ref: '#/components/parameters/telephony-credentials_PageConsolidated'
- $ref: '#/components/parameters/telephony-credentials_FilterConsolidated'
responses:
'200':
description: Successful response with multiple credentials
content:
application/json:
schema:
type: object
title: Get All Telephony Credential Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/TelephonyCredential'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Resource not found
post:
description: Creates a new on-demand telephony credential for the specified connection. The credential can then be used
to generate access tokens for SIP or WebRTC clients.
summary: Create a credential
operationId: CreateTelephonyCredential
tags:
- Credentials
parameters: []
requestBody:
description: Parameters that can be defined during credential creation
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TelephonyCredentialCreateRequest'
responses:
'201':
description: Successful response with details about a credential
content:
application/json:
schema:
type: object
title: Telephony Credential Response
properties:
data:
$ref: '#/components/schemas/TelephonyCredential'
'422':
description: Bad request
/telephony_credentials/{id}:
delete:
description: Permanently deletes the specified telephony credential, revoking any access it provided.
summary: Delete a credential
operationId: DeleteTelephonyCredential
tags:
- Credentials
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a credential
content:
application/json:
schema:
type: object
title: Telephony Credential Response
properties:
data:
$ref: '#/components/schemas/TelephonyCredential'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
get:
description: Get the details of an existing On-demand Credential.
summary: Get a credential
operationId: GetTelephonyCredential
tags:
- Credentials
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a credential
content:
application/json:
schema:
type: object
title: Telephony Credential Response
properties:
data:
$ref: '#/components/schemas/TelephonyCredential'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Resource not found
patch:
description: Updates the specified telephony credential and returns the updated credential.
summary: Update a credential
operationId: UpdateTelephonyCredential
tags:
- Credentials
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
requestBody:
description: Parameters that can be updated in a credential
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TelephonyCredentialUpdateRequest'
responses:
'200':
description: Successful response with details about a credential
content:
application/json:
schema:
type: object
title: Telephony Credential Response
properties:
data:
$ref: '#/components/schemas/TelephonyCredential'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
/telephony_credentials/{id}/token:
post:
description: Create an Access Token (JWT) for the credential.
summary: Create an Access Token.
operationId: CreateTelephonyCredentialToken
tags:
- Access Tokens
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
- $ref: '#/components/parameters/telephony-credentials_IdempotencyKey'
responses:
'201':
description: JWT
headers:
Idempotent-Replayed:
$ref: '#/components/headers/IdempotentReplayed'
content:
text/plain:
schema:
type: string
example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ
'400':
description: Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key
headers are rejected by Edge with HTTP 400 and error code 10015.
content:
application/json:
schema:
$ref: '#/components/schemas/telephony-credentials_ErrorResponse'
'404':
description: Resource not Found
'409':
$ref: '#/components/responses/IdempotencyConflictResponse'
'422':
description: Validation failed. Reusing an Idempotency-Key with a different request also returns 422 (10027).
content:
application/json:
schema:
$ref: '#/components/schemas/telephony-credentials_ErrorResponse'
'503':
description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request.
content:
application/json:
schema:
$ref: '#/components/schemas/telephony-credentials_ErrorResponse'
/terms_of_service/agreements:
get:
summary: List the calling user's Terms of Service agreements
description: 'Returns the Terms of Service agreements the authenticated user has on file. Each entry records the version
agreed to and when. Most users only have one agreement per product, but if the ToS is updated and the user re-agrees
a new entry is added.
Results are paginated with the standard `page[number]` / `page[size]` parameters; the response uses the standard `{data,
meta}` JSON:API envelope.
By default this returns agreements for **all** products the user has agreed to. Pass the `product_type` query parameter
to scope the result to a single product.'
operationId: listTermsOfServiceAgreements
tags:
- Terms of Service
parameters:
- name: product_type
in: query
required: false
description: Optional filter. Omit to list the user's agreements for **every** product (branded_calling and number_reputation);
pass a value to return only that product's agreements.
schema:
$ref: '#/components/schemas/TosProductType'
example: branded_calling
- $ref: '#/components/parameters/BcPageNumber'
- $ref: '#/components/parameters/BcPageSize'
responses:
'200':
description: Paginated list of agreements.
content:
application/json:
schema:
$ref: '#/components/schemas/TosAgreementList'
default:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
4XX:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
/terms_of_service/agreements/{agreement_id}:
get:
summary: Get a Terms of Service agreement by id
description: Retrieve a single ToS agreement record. Returns `404` if the agreement does not exist or does not belong
to the authenticated user.
operationId: getTermsOfServiceAgreement
tags:
- Terms of Service
parameters:
- name: agreement_id
in: path
description: Unique identifier of the agreement.
required: true
schema:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
responses:
'200':
description: Agreement.
content:
application/json:
schema:
$ref: '#/components/schemas/TosAgreementWrapped'
default:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
4XX:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
/terms_of_service/branded_calling/agree:
post:
summary: Agree to the Branded Calling Terms of Service
description: 'Records the authenticated user''s agreement to the current Branded Calling ToS. No body required. Idempotent
- re-calling after agreement is a no-op and returns the existing agreement.
This is a prerequisite for activating Branded Calling on any enterprise (`POST /enterprises/{id}/branded_calling`);
without an agreement, activation returns `403`.'
operationId: agreeToBrandedCallingTos
tags:
- Terms of Service
responses:
'201':
description: Agreement recorded.
content:
application/json:
schema:
$ref: '#/components/schemas/TosAgreementWrapped'
default:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
4XX:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
/terms_of_service/info:
get:
summary: Get Terms of Service information
description: Returns the available Terms of Service agreements (product, current version, terms URL, effective date).
Omit `product_type` to return all products; pass it to scope to one.
operationId: getTermsOfServiceInfo
tags:
- Terms of Service
parameters:
- name: product_type
in: query
required: false
description: Optional product filter. Omit to return info for all products.
schema:
$ref: '#/components/schemas/TosProductType'
example: branded_calling
responses:
'200':
description: Terms of Service information.
content:
application/json:
schema:
$ref: '#/components/schemas/TermsOfServiceInfo'
'401':
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
default:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
/terms_of_service/number_reputation/agree:
post:
summary: Agree to the Phone Number Reputation Terms of Service
description: 'Records the authenticated user''s agreement to the current Phone Number Reputation ToS. No body required.
Idempotent.
Prerequisite for using any of the `/v2/.../reputation/*` endpoints.'
operationId: agreeNumberReputationTermsOfService
tags:
- Terms of Service
responses:
'201':
description: Agreement recorded.
content:
application/json:
schema:
$ref: '#/components/schemas/TosAgreementWrapped'
default:
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
4XX:
$ref: '#/components/responses/number-reputation_GenericErrorResponse'
/terms_of_service/status:
get:
summary: Get the calling user's Terms of Service status
description: 'Returns whether the authenticated user has agreed to the current Terms of Service for the product given
by `product_type`. Used during onboarding to decide whether to prompt the user with the ToS dialog before continuing.
`agreement_required: true` means the user has not yet agreed (or has agreed to an outdated version) and must agree
before using that product''s endpoints.'
operationId: getTermsOfServiceStatus
tags:
- Terms of Service
parameters:
- name: product_type
in: query
required: false
description: Which product's ToS to check. Defaults to `branded_calling`.
schema:
$ref: '#/components/schemas/TosProductType'
responses:
'200':
description: Status.
content:
application/json:
schema:
$ref: '#/components/schemas/TosStatusWrapped'
default:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
4XX:
$ref: '#/components/responses/branded-calling_GenericErrorResponse'
/texml/Accounts/{account_sid}/Calls:
get:
summary: Fetch multiple call resources
description: Returns multiple call resouces for an account. This endpoint is eventually consistent.
x-latency-category: responsive
operationId: GetTexmlCalls
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageToken'
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/Status'
- $ref: '#/components/parameters/StartTime'
- $ref: '#/components/parameters/StartTime_gt'
- $ref: '#/components/parameters/StartTime_lt'
- $ref: '#/components/parameters/EndTime'
- $ref: '#/components/parameters/EndTime_gt'
- $ref: '#/components/parameters/EndTime_lt'
responses:
'200':
description: Multiple call resources.
content:
application/json:
schema:
$ref: '#/components/schemas/CallResourceIndex'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Initiate an outbound call
description: Initiate an outbound TeXML call. Telnyx will request TeXML from the XML Request URL configured for the
TeXML Application in the Mission Control Portal.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: InitiateTexmlCall
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
requestBody:
description: Initiate Call request object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InitiateCallRequest'
responses:
'200':
description: Successful response upon initiating a TeXML call.
content:
application/json:
schema:
$ref: '#/components/schemas/InitiateCallResult'
'422':
$ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83'
'429':
$ref: '#/components/responses/call-scripting_TooManyRequestsResponse'
default:
$ref: '#/components/responses/call-scripting_GenericErrorResponse'
/texml/Accounts/{account_sid}/Calls/{call_sid}:
get:
summary: Fetch a call
description: Returns an individual call identified by its CallSid. This endpoint is eventually consistent.
x-latency-category: responsive
operationId: GetTexmlCall
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/CallSid'
- $ref: '#/components/parameters/AccountSid'
responses:
'200':
description: Call resource.
content:
application/json:
schema:
$ref: '#/components/schemas/CallResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Update call
description: Update TeXML call. Please note that the keys present in the payload MUST BE formatted in CamelCase as specified
in the example.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: UpdateTexmlCall
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/CallSid'
- $ref: '#/components/parameters/AccountSid'
requestBody:
description: Update Call request object
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateCallRequest'
responses:
'200':
description: Call resource.
content:
application/json:
schema:
$ref: '#/components/schemas/CallResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
'422':
$ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83'
/texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json:
get:
summary: Fetch recordings for a call
description: Returns recordings for a call identified by call_sid.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: FetchTeXMLCallRecordings
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
responses:
'200':
description: Successful Get Call Recordings Response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlGetCallRecordingsResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Request recording for a call
description: Starts recording with specified parameters for call idientified by call_sid.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: StartTeXMLCallRecording
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
requestBody:
$ref: '#/components/requestBodies/TexmlCreateCallRecordingRequest'
responses:
'200':
description: Successful call recording create response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlCreateCallRecordingResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json:
post:
summary: Update recording on a call
description: Updates recording resource for particular call.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: UpdateTeXMLCallRecording
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
- $ref: '#/components/parameters/RecordingSid'
requestBody:
$ref: '#/components/requestBodies/TexmlUpdateCallRecordingRequest'
responses:
'200':
description: Successful call recording create response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlCreateCallRecordingResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json:
post:
summary: Request siprec session for a call
description: Starts siprec session with specified parameters for call idientified by call_sid.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: StartTeXMLSiprecSession
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
requestBody:
$ref: '#/components/requestBodies/TexmlCreateSiprecSessionRequest'
responses:
'200':
description: Successful SIPREC session create response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlCreateSiprecSessionResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json:
post:
summary: Updates siprec session for a call
description: Updates siprec session identified by siprec_sid.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: UpdateTeXMLSiprecSession
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
- $ref: '#/components/parameters/SiprecSid'
requestBody:
$ref: '#/components/requestBodies/TexmlUpdateSiprecSessionRequest'
responses:
'200':
description: Successful SIPREC session update response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlUpdateSiprecSessionResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json:
post:
summary: Start streaming media from a call.
description: Starts streaming media from a call to a specific WebSocket address.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: StartTeXMLCallStreaming
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
requestBody:
$ref: '#/components/requestBodies/TexmlCreateCallStreamingRequest'
responses:
'200':
description: Successful call streaming create response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlCreateCallStreamingResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json:
post:
summary: Update streaming on a call
description: Updates streaming resource for particular call.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: UpdateTeXMLCallStreaming
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/CallSid'
- $ref: '#/components/parameters/StreamingSid'
requestBody:
$ref: '#/components/requestBodies/TexmlUpdateCallStreamingRequest'
responses:
'200':
description: Successful call streaming update response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlUpdateCallStreamingResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Conferences:
get:
summary: List conference resources
description: Returns a paginated list of conference resources for the account, with support for filtering by friendly
name, status, and creation or update dates.
x-latency-category: responsive
operationId: GetTexmlConferences
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageToken'
- $ref: '#/components/parameters/FriendlyName'
- $ref: '#/components/parameters/ConferenceStatus'
- $ref: '#/components/parameters/DateCreated'
- $ref: '#/components/parameters/DateUpdated'
responses:
'200':
description: Multiple conference resources.
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceResourceIndex'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Conferences/{conference_sid}:
get:
summary: Fetch a conference resource
description: Returns a single conference resource for the account by its ConferenceSid.
x-latency-category: responsive
operationId: GetTexmlConference
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
responses:
'200':
description: Conference resource.
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Update a conference resource
description: Updates the specified conference resource, for example to modify its status, and returns the updated conference.
x-latency-category: responsive
operationId: UpdateTexmlConference
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
requestBody:
description: Update Conference request object
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/call-scripting_UpdateConferenceRequest_c75353cb83'
responses:
'200':
description: Conference resource.
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants:
get:
summary: List conference participants
description: Returns the list of participants currently in the specified conference.
x-latency-category: responsive
operationId: GetTexmlConferenceParticipants
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
responses:
'200':
description: Multiple participant resources.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantResourceIndex'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Dial a new conference participant
description: Dials a new participant into the specified conference and returns the created participant resource.
x-latency-category: responsive
operationId: DialTexmlConferenceParticipant
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
requestBody:
description: Dial Conference Participant request object
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DialConferenceParticipantRequest'
responses:
'200':
description: New participant resource.
content:
application/json:
schema:
$ref: '#/components/schemas/NewParticipantResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}:
delete:
summary: Delete a conference participant
description: Removes the specified participant from the conference, ending their leg of the call.
x-latency-category: responsive
operationId: DeleteTexmlConferenceParticipant
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
- $ref: '#/components/parameters/CallSidOrParticipantLabel'
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
get:
summary: Get conference participant resource
description: Returns a single conference participant resource by call SID or participant label.
x-latency-category: responsive
operationId: GetTexmlConferenceParticipant
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
- $ref: '#/components/parameters/CallSidOrParticipantLabel'
responses:
'200':
description: Participant resource.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Update a conference participant
description: Updates the specified conference participant, for example muting or holding them, and returns the updated
participant.
x-latency-category: responsive
operationId: UpdateTexmlConferenceParticipant
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
- $ref: '#/components/parameters/CallSidOrParticipantLabel'
requestBody:
description: Update Conference Participant request object
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/call-scripting_UpdateConferenceParticipantRequest_c75353cb83'
responses:
'200':
description: Participant resource.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings:
get:
summary: List conference recordings
description: Returns the list of recordings made for the specified conference.
x-latency-category: responsive
operationId: GetTexmlConferenceRecordings
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
responses:
'200':
description: Multiple conference recording resources.
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceRecordingResourceIndex'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json:
get:
summary: Fetch recordings for a conference
description: Returns recordings for a conference identified by conference_sid.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: FetchTeXMLConferenceRecordings
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/ConferenceSid'
responses:
'200':
description: Successful Get Call Recordings Response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlGetCallRecordingsResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Queues:
get:
summary: List queue resources
description: Returns a paginated list of queue resources for the account, with support for filtering by creation or
update dates.
x-latency-category: responsive
operationId: GetTexmlQueues
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageToken'
- $ref: '#/components/parameters/DateCreated'
- $ref: '#/components/parameters/DateUpdated'
responses:
'200':
description: Multiple queue resources.
content:
application/json:
schema:
$ref: '#/components/schemas/QueueResourceIndex'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Create a new queue
description: Creates a new queue resource for the account with the provided settings and returns it.
x-latency-category: responsive
operationId: CreateTexmlQueue
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
requestBody:
description: Create Queue request object
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/call-scripting_CreateQueueRequest_c75353cb83'
responses:
'200':
description: Queue resource.
content:
application/json:
schema:
$ref: '#/components/schemas/QueueResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Queues/{queue_sid}:
delete:
summary: Delete a queue resource
description: Permanently deletes the specified queue resource from the account.
x-latency-category: responsive
operationId: DeleteTexmlQueue
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/QueueSid'
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
get:
summary: Fetch a queue resource
description: Returns a single queue resource for the account by its QueueSid.
x-latency-category: responsive
operationId: GetTexmlQueue
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/QueueSid'
responses:
'200':
description: Queue resource.
content:
application/json:
schema:
$ref: '#/components/schemas/QueueResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
post:
summary: Update a queue resource
description: Updates the specified queue resource's settings and returns the updated queue.
x-latency-category: responsive
operationId: UpdateTexmlQueue
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/QueueSid'
requestBody:
description: Update Queue request object
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/call-scripting_UpdateQueueRequest_c75353cb83'
responses:
'200':
description: Queue resource.
content:
application/json:
schema:
$ref: '#/components/schemas/QueueResource'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Recordings.json:
get:
summary: Fetch multiple recording resources
description: Returns multiple recording resources for an account.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: GetTeXMLCallRecordings
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSizeTexml'
- $ref: '#/components/parameters/TexmlDateCreated'
responses:
'200':
description: Successful Get Call Recordings Response
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlGetCallRecordingsResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Recordings/{recording_sid}.json:
delete:
summary: Delete recording resource
description: Deletes recording resource identified by recording id.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: DeleteTeXMLCallRecording
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/RecordingSid'
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
get:
summary: Fetch recording resource
description: Returns recording resource identified by recording id.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: GetTeXMLCallRecording
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/RecordingSid'
responses:
'200':
description: Retrieves call recording resource.
content:
application/json:
schema:
$ref: '#/components/schemas/TexmlGetCallRecordingResponseBody'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Transcriptions.json:
get:
summary: List recording transcriptions
description: Returns multiple recording transcription resources for an account.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: GetTeXMLRecordingTranscriptions
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/PageToken'
- $ref: '#/components/parameters/PageSize'
responses:
'200':
description: Successful list Recording Transcriptions Response
content:
application/json:
schema:
type: object
title: List Recording Transcriptions Response
properties:
transcriptions:
type: array
items:
$ref: '#/components/schemas/TexmlRecordingTranscription'
end:
type: integer
description: The number of the last element on the page, zero-indexed
example: 1
first_page_uri:
type: string
format: uri
description: Relative uri to the first page of the query results
previous_page_uri:
type: string
format: uri
description: Relative uri to the previous page of the query results
next_page_uri:
type: string
description: Relative uri to the next page of the query results
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions.json?PageToken=KRWXZPO&PageSize=1
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions.json?PageToken=YTBNAXPI&PageSize=1
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json:
delete:
summary: Delete a recording transcription
description: Permanently deletes a recording transcription.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: DeleteTeXMLRecordingTranscription
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/RecordingTranscriptionSid'
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
get:
summary: Fetch a recording transcription resource
description: Returns the recording transcription resource identified by its ID.
x-latency-category: responsive
x-group-parameters: 'true'
operationId: GetTeXMLRecordingTranscription
tags:
- TeXML REST Commands
parameters:
- $ref: '#/components/parameters/AccountSid'
- $ref: '#/components/parameters/RecordingTranscriptionSid'
responses:
'200':
description: Successful get Recording Transcription Response
content:
application/json:
schema:
type: object
title: Recording Transcription Response
$ref: '#/components/schemas/TexmlRecordingTranscription'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
/texml/ai_calls/{connection_id}:
post:
summary: Initiate an outbound AI call
description: 'Initiate an outbound AI call with warm-up support: Telnyx attempts to warm up the assistant identified
by `AIAssistantId` before placing the call and starts it automatically when the called party answers. Validates parameters,
builds an internal TeXML with an AI Assistant configuration, encodes instructions into client state, and calls the
dial API. The Twiml, Texml, and Url parameters are not allowed and will result in a 422 error.
**Expected callback events:**
Status callbacks: `initiated`, `ringing`, `answered`, one terminal status (`completed`, `no-answer`, `busy`, `canceled`,
or `failed`), then `analyzed` after post-call processing completes.
Conversation callbacks: `conversation_created` and `conversation_ended`.
Recording, AMD, transcription, and deepfake detection callbacks are only sent when those features are enabled.
'
x-latency-category: responsive
x-group-parameters: 'true'
operationId: InitiateTexmlAICall
tags:
- TeXML REST Commands
parameters:
- name: connection_id
in: path
description: The ID of the TeXML connection to use for the call.
required: true
schema:
type: string
requestBody:
description: Initiate AI Call request object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InitiateAICallRequest'
responses:
'200':
$ref: '#/components/responses/InitiateAICallResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'422':
$ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83'
/texml/calls/{connection_id}:
post:
summary: Create a connection-scoped TeXML call
description: Initiate an outbound TeXML call using a TeXML application connection ID, not an account SID. Request parameter
names are case-sensitive. From and To are required; Texml supplies inline instructions and Url overrides the application
XML request URL. When neither is supplied, the application configuration supplies the instructions. The response is
a flat call object without a data wrapper.
operationId: CreateTexmlCall
tags:
- TeXML REST Commands
parameters:
- name: connection_id
in: path
required: true
description: The ID of the connection holding the TeXML application to call from.
schema:
type: string
example: '1234567890'
requestBody:
required: true
description: Connection-scoped outbound call parameters.
content:
application/json:
schema:
type: object
required:
- From
- To
properties:
From:
type: string
description: The E.164-formatted phone number or SIP URI to present as the caller.
example: '+13120001234'
To:
type: string
description: The E.164-formatted phone number or SIP URI to call.
example: '+13121230000'
Texml:
type: string
description: Inline TeXML instructions to execute when the call is answered.
example: Hello
Url:
type: string
description: The URL from which to retrieve TeXML instructions. Overrides the TeXML application XML request
URL.
example: https://example.com/instructions.xml
Method:
type: string
enum:
- GET
- POST
description: HTTP method used to retrieve TeXML instructions from Url.
example: POST
example:
From: '+13120001234'
To: '+13121230000'
Texml: Hello
application/x-www-form-urlencoded:
schema:
type: object
required:
- From
- To
properties:
From:
type: string
description: The E.164-formatted phone number or SIP URI to present as the caller.
example: '+13120001234'
To:
type: string
description: The E.164-formatted phone number or SIP URI to call.
example: '+13121230000'
Texml:
type: string
description: Inline TeXML instructions to execute when the call is answered.
example: Hello
Url:
type: string
description: The URL from which to retrieve TeXML instructions. Overrides the TeXML application XML request
URL.
example: https://example.com/instructions.xml
Method:
type: string
enum:
- GET
- POST
description: HTTP method used to retrieve TeXML instructions from Url.
example: POST
example:
From: '+13120001234'
To: '+13121230000'
Texml: Hello
responses:
'200':
description: The outbound call was queued.
content:
application/json:
schema:
type: object
required:
- call_sid
- from
- to
- status
properties:
call_sid:
type: string
description: The call control ID of the created call.
example: v3:call-control-id
from:
type: string
description: The caller address.
example: '+13120001234'
to:
type: string
description: The called address.
example: '+13121230000'
status:
type: string
description: The initial status of the outbound call.
enum:
- queued
example: queued
example:
call_sid: v3:call-control-id
from: '+13120001234'
to: '+13121230000'
status: queued
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'422':
description: A required call parameter is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
example:
errors:
- code: '10004'
detail: 'Can''t be blank: To'
source:
pointer: /To
title: Missing required parameter
/texml/secrets:
post:
summary: Create a TeXML secret
description: Create a TeXML secret which can be later used as a Dynamic Parameter for TeXML when using Mustache Templates
in your TeXML. In your TeXML you will be able to use your secret name, and this name will be replaced by the actual
secret value when processing the TeXML on Telnyx side. The secrets are not visible in any logs.
x-latency-category: responsive
operationId: CreateTexmlSecret
tags:
- TeXML REST Commands
requestBody:
description: Create TeXML secret request object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTeXMLSecretRequest'
responses:
'201':
description: Successful response upon creating a TeXML secret.
content:
application/json:
schema:
type: object
title: Create TeXML Secret request
properties:
data:
$ref: '#/components/schemas/CreateTeXMLSecretResult'
'422':
$ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83'
/texml_applications:
get:
description: Returns a list of your TeXML Applications.
summary: List all TeXML Applications
operationId: FindTexmlApplications
tags:
- TeXML Applications
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/call-scripting_PageConsolidated'
- $ref: '#/components/parameters/call-scripting_FilterConsolidated'
- $ref: '#/components/parameters/SortApplication'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Get All Texml Applications Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/TexmlApplication'
meta:
$ref: '#/components/schemas/call-scripting_PaginationMeta'
'400':
$ref: '#/components/responses/call-scripting_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/call-scripting_UnauthorizedResponse'
post:
description: Creates a TeXML application, which defines the voice URLs and settings used to serve TeXML instructions
for calls, and returns the created application.
summary: Creates a TeXML Application
operationId: CreateTexmlApplication
tags:
- TeXML Applications
x-endpoint-cost: medium
parameters: []
requestBody:
description: Parameters that can be set when creating a TeXML Application
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTexmlApplicationRequest'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
title: Texml Application Response
properties:
data:
$ref: '#/components/schemas/TexmlApplication'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/call-scripting_UnauthorizedResponse'
'404':
$ref: '#/components/responses/call-scripting_NotFoundResponse_c75353cb83'
'422':
$ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83'
/texml_applications/{id}:
delete:
description: Permanently deletes the specified TeXML application from your account.
summary: Deletes a TeXML Application
operationId: DeleteTexmlApplication
tags:
- TeXML Applications
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Texml Application Response
properties:
data:
$ref: '#/components/schemas/TexmlApplication'
'400':
$ref: '#/components/responses/call-scripting_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/call-scripting_UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponseApp'
get:
description: Retrieves the details of an existing TeXML Application.
summary: Retrieve a TeXML Application
operationId: GetTexmlApplication
tags:
- TeXML Applications
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Texml Application Response
properties:
data:
$ref: '#/components/schemas/TexmlApplication'
'400':
$ref: '#/components/responses/call-scripting_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/call-scripting_UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponseApp'
patch:
description: Updates settings of an existing TeXML Application.
summary: Update a TeXML Application
operationId: UpdateTexmlApplication
tags:
- TeXML Applications
parameters:
- $ref: '#/components/parameters/id'
requestBody:
description: Parameters that can be updated in a TeXML Application
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTexmlApplicationRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
title: Texml Application Response
properties:
data:
$ref: '#/components/schemas/TexmlApplication'
'400':
$ref: '#/components/responses/call-scripting_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/call-scripting_UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponseApp'
'409':
description: Conflict. Another update to this application is still in progress. Wait and retry the request later.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
example:
errors:
- detail: A previous update to this connection is still in progress. Please try again later.
'422':
$ref: '#/components/responses/call-scripting_UnprocessableEntityResponse_c75353cb83'
/text-to-speech/speech:
get:
summary: Stream text to speech over WebSocket
description: 'Open a WebSocket connection to stream text and receive synthesized audio in real time. Authentication
is provided via the standard `Authorization: Bearer ` header. Send JSON frames with text to synthesize; receive
JSON frames containing base64-encoded audio chunks.
Supported providers: `aws`, `telnyx`, `azure`, `minimax`, `resemble`, `elevenlabs`, `xai`, `humain`, `soniox`.
**Connection flow:**
1. Open WebSocket with query parameters specifying provider, voice, and model.
2. Send an initial handshake message `{"text": " "}` (single space) with optional `voice_settings` to initialize the
session.
3. Send text messages as `{"text": "Hello world"}`.
4. Receive audio chunks as JSON frames with base64-encoded audio.
5. A final frame with `isFinal: true` indicates the end of audio for the current text.
To interrupt and restart synthesis mid-stream, send `{"force": true}` — the current worker is stopped and a new one
is started.
**Note:** The Telnyx `Ultra` model is not available over WebSocket. Use the HTTP POST `/text-to-speech/speech` endpoint
instead.'
operationId: TextToSpeechOverWs
tags:
- Text To Speech Commands
parameters:
- $ref: '#/components/parameters/voice'
- $ref: '#/components/parameters/provider'
- $ref: '#/components/parameters/model_id'
- $ref: '#/components/parameters/voice_id'
- $ref: '#/components/parameters/disable_cache'
- $ref: '#/components/parameters/audio_format'
- $ref: '#/components/parameters/socket_id'
responses:
'101':
description: 'WebSocket connection established. Communication proceeds via JSON frames.
**Client → Server:** See `ClientTextFrame` schema.
**Server → Client:** See `AudioChunkFrame`, `FinalFrame`, and `ErrorFrame` schemas.'
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ClientTextFrame'
- $ref: '#/components/schemas/TtsServerEvent'
'200':
description: WebSocket upgrade successful — this response is not returned directly. See 101 for frame documentation.
'400':
description: Invalid parameters — provider not supported or missing required fields.
'401':
description: Authentication failed — missing or invalid `x-telnyx-auth-rev2` header.
post:
summary: Generate speech from text
description: 'Generate synthesized speech audio from text input. Returns audio in the requested format (binary audio
stream, base64-encoded JSON, or an audio URL for later retrieval).
Authentication is provided via the standard `Authorization: Bearer ` header.
The `voice` parameter provides a convenient shorthand to specify provider, model, and voice in a single string (e.g.
`Telnyx.Ultra.`). Alternatively, specify `provider` explicitly along with provider-specific parameters.
Supported providers: `aws`, `telnyx`, `azure`, `elevenlabs`, `minimax`, `resemble`, `xai`, `humain`, `soniox`.
The Telnyx `Ultra` model supports 44 languages with emotion control, speed adjustment, and volume control. Use the
`telnyx` provider-specific parameters to configure these features.'
operationId: generateSpeech
tags:
- Text To Speech Commands
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateSpeechRequest'
example:
voice: string
text: string
provider: aws
language: string
text_type: text
output_type: binary_output
disable_cache: false
aws:
language_code: string
text_type: text
lexicon_names:
- string
output_format: string
sample_rate: string
telnyx:
voice_speed: 1.0
response_format: mp3
sampling_rate: 24000
volume: 1.0
emotion: neutral
azure:
language_code: en-US
output_format: audio-24khz-160kbitrate-mono-mp3
text_type: text
api_key: string
region: string
deployment_id: string
effect: string
gender: string
elevenlabs:
language_code: string
api_key: string
minimax:
speed: 0
vol: 0
pitch: 0
response_format: string
language_boost: string
resemble:
api_key: string
precision: string
sample_rate: string
format: string
xai:
voice_id: eve
language: auto
output_format: mp3
sample_rate: 24000
humain:
voice_id: sara-en
ttfb_eagerness: 0
soniox:
voice_id: Emma
model_id: tts-rt-v2
language: en
speed: 1.0
audio_format: mp3
responses:
'200':
description: 'Speech generated successfully. The response format depends on the `output_type` parameter:
- `binary_output` (default): Returns raw audio bytes with the appropriate `Content-Type` header. Most providers
return `audio/mpeg`; `humain` has no MP3 output and always returns raw headerless PCM16LE 24kHz mono as `audio/pcm`.
- `base64_output`: Returns a JSON object with `base64_audio` field.'
content:
audio/mpeg:
schema:
type: string
format: binary
description: Raw audio bytes. Returned when `output_type` is `binary_output` (default) for most providers.
audio/pcm:
schema:
type: string
format: binary
description: Raw headerless PCM16LE audio bytes, mono, 24kHz. Returned when `output_type` is `binary_output`
(default) and `provider` is `humain` — Humain has no MP3 output and no format negotiation.
application/json:
schema:
$ref: '#/components/schemas/Base64AudioResponse'
example:
base64_audio: string
'400':
description: Bad request — invalid parameters or provider error.
content:
application/json:
schema:
$ref: '#/components/schemas/text-to-speech_ErrorResponse'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
'401':
description: Authentication failed — missing or invalid API key.
'422':
description: Validation failed — invalid or missing required fields.
content:
application/json:
schema:
$ref: '#/components/schemas/text-to-speech_ValidationErrorResponse'
/text-to-speech/voices:
get:
summary: List available voices
description: 'Retrieve a list of available voices from one or all TTS providers. When `provider` is specified, returns
voices for that provider only. Otherwise, returns voices from all providers.
Some providers (ElevenLabs, Resemble) require an API key to list voices.'
operationId: listVoices
tags:
- Text To Speech Commands
parameters:
- name: provider
in: query
required: false
description: Filter voices by provider. If omitted, voices from all providers are returned.
schema:
type: string
enum:
- aws
- telnyx
- azure
- elevenlabs
- minimax
- resemble
- xai
- humain
- soniox
- name: api_key
in: query
required: false
description: API key for providers that require one to list voices (e.g. ElevenLabs).
schema:
type: string
responses:
'200':
description: List of available voices.
content:
application/json:
schema:
$ref: '#/components/schemas/VoicesResponse'
example:
voices:
- provider: string
name: string
voice_id: string
language: string
gender: string
'400':
description: Bad request — invalid provider or missing required API key.
content:
application/json:
schema:
$ref: '#/components/schemas/text-to-speech_ErrorResponse'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
'401':
description: Authentication failed — missing or invalid API key.
/traffic/policy/profiles:
get:
summary: Get all traffic policy profiles
description: Get all traffic policy profiles belonging to the user that match the given filters.
operationId: GetTrafficPolicyProfiles
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/wireless_PageNumber'
- $ref: '#/components/parameters/wireless_PageSize'
- name: filter[type]
description: Filter by traffic policy profile type.
in: query
required: false
schema:
type: string
enum:
- whitelist
- blacklist
- throttling
example: whitelist
- name: filter[service]
description: Filter by service ID.
in: query
required: false
schema:
type: string
example: service_123
- name: sort
description: Sorts traffic policy profiles by the given field. Defaults to ascending order unless field is prefixed
with a minus sign.
in: query
required: false
schema:
type: string
enum:
- service
- -service
- type
- -type
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TrafficPolicyProfile'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse'
x-latency-category: responsive
post:
summary: Create a traffic policy profile
description: Create a new traffic policy profile. At least one of `services`, `ip_ranges`, or `domains` must be provided.
operationId: CreateTrafficPolicyProfile
tags:
- Traffic Policy Profiles
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
description: The type of the traffic policy profile.
type: string
enum:
- whitelist
- blacklist
example: whitelist
services:
description: Array of PCEF service IDs to include in the profile.
type: array
items:
type: string
example:
- service_123
- service_456
ip_ranges:
description: Array of IP ranges in CIDR notation.
type: array
items:
type: string
example:
- 10.64.0.0/24
- 10.64.0.0/25
domains:
description: Array of domain names.
type: array
items:
type: string
example:
- www.hbomax.com
- netflix.com
limit_bw_kbps:
description: Bandwidth limit in kbps. Must be 512 or 1024.
type: integer
enum:
- 512
- 1024
example: 512
required:
- type
responses:
'201':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TrafficPolicyProfile'
'422':
$ref: '#/components/responses/sim-cards-configuration_wireless_UnprocessableEntity'
default:
$ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse'
x-latency-category: responsive
/traffic/policy/profiles/services:
get:
summary: Get all available traffic policy profile services
description: Get all available PCEF services that can be used in traffic policy profiles.
operationId: GetTrafficPolicyProfileServices
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/wireless_PageNumber'
- $ref: '#/components/parameters/wireless_PageSize'
- name: filter[group]
description: Filter services by group.
in: query
required: false
schema:
type: string
example: Social Media
- name: filter[name]
description: Filter services by name.
in: query
required: false
schema:
type: string
example: Netflix
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WirelessPcrfService'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse'
x-latency-category: responsive
/traffic/policy/profiles/{id}:
delete:
summary: Delete a traffic policy profile
description: Permanently deletes the specified traffic policy profile from your account.
operationId: DeleteTrafficPolicyProfile
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/TrafficPolicyProfileId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
'404':
$ref: '#/components/responses/wireless_ResourceNotFound'
default:
$ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse'
x-latency-category: responsive
get:
summary: Get a traffic policy profile
description: Returns the details regarding a specific traffic policy profile.
operationId: GetTrafficPolicyProfile
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/TrafficPolicyProfileId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TrafficPolicyProfile'
'404':
$ref: '#/components/responses/wireless_ResourceNotFound'
default:
$ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse'
x-latency-category: responsive
patch:
summary: Update a traffic policy profile
description: Updates the specified traffic policy profile and returns the updated profile.
operationId: UpdateTrafficPolicyProfile
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/TrafficPolicyProfileId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
description: The type of the traffic policy profile.
type: string
enum:
- whitelist
- blacklist
- throttling
example: whitelist
services:
description: Array of PCEF service IDs to include in the profile.
type: array
items:
type: string
example:
- service_123
ip_ranges:
description: Array of IP ranges in CIDR notation.
type: array
items:
type: string
example:
- 10.64.0.0/24
domains:
description: Array of domain names.
type: array
items:
type: string
example:
- netflix.com
limit_bw_kbps:
description: Bandwidth limit in kbps. Must be 512 or 1024, or null to remove.
type:
- integer
- 'null'
enum:
- 512
- 1024
- null
example: 1024
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TrafficPolicyProfile'
'404':
$ref: '#/components/responses/wireless_ResourceNotFound'
'422':
$ref: '#/components/responses/sim-cards-configuration_wireless_UnprocessableEntity'
default:
$ref: '#/components/responses/sim-cards-configuration_wireless_GenericErrorResponse'
x-latency-category: responsive
/traffic_policy_profiles:
get:
summary: Get all traffic policy profiles
description: Get all traffic policy profiles belonging to the user that match the given filters.
operationId: GetTrafficPolicyProfiles
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- name: filter[type]
description: Filter by traffic policy profile type.
in: query
required: false
schema:
type: string
enum:
- whitelist
- blacklist
- throttling
example: whitelist
- name: filter[service]
description: Filter by service ID.
in: query
required: false
schema:
type: string
example: service_123
- name: sort
description: Sorts traffic policy profiles by the given field. Defaults to ascending order unless field is prefixed
with a minus sign.
in: query
required: false
schema:
type: string
enum:
- service
- -service
- type
- -type
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TrafficPolicyProfile'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
post:
summary: Create a traffic policy profile
description: Create a new traffic policy profile. At least one of `services`, `ip_ranges`, or `domains` must be provided.
operationId: CreateTrafficPolicyProfile
tags:
- Traffic Policy Profiles
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
description: The type of the traffic policy profile.
type: string
enum:
- whitelist
- blacklist
example: whitelist
services:
description: Array of PCEF service IDs to include in the profile.
type: array
items:
type: string
example:
- service_123
- service_456
ip_ranges:
description: Array of IP ranges in CIDR notation.
type: array
items:
type: string
example:
- 10.64.0.0/24
- 10.64.0.0/25
domains:
description: Array of domain names.
type: array
items:
type: string
example:
- www.hbomax.com
- netflix.com
limit_bw_kbps:
description: Bandwidth limit in kbps. Must be 512 or 1024.
type: integer
enum:
- 512
- 1024
example: 512
required:
- type
responses:
'201':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TrafficPolicyProfile'
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/traffic_policy_profiles/services:
get:
summary: Get all available traffic policy profile services
description: Get all available PCEF services that can be used in traffic policy profiles.
operationId: GetTrafficPolicyProfileServices
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- name: filter[group]
description: Filter services by group.
in: query
required: false
schema:
type: string
example: Social Media
- name: filter[name]
description: Filter services by name.
in: query
required: false
schema:
type: string
example: Netflix
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WirelessPcrfService'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/traffic_policy_profiles/{id}:
delete:
summary: Delete a traffic policy profile
description: Permanently deletes the specified traffic policy profile from your account.
operationId: DeleteTrafficPolicyProfile
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/TrafficPolicyProfileId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
get:
summary: Get a traffic policy profile
description: Returns the details regarding a specific traffic policy profile.
operationId: GetTrafficPolicyProfile
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/TrafficPolicyProfileId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TrafficPolicyProfile'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
patch:
summary: Update a traffic policy profile
description: Updates the specified traffic policy profile and returns the updated profile.
operationId: UpdateTrafficPolicyProfile
tags:
- Traffic Policy Profiles
parameters:
- $ref: '#/components/parameters/TrafficPolicyProfileId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
description: The type of the traffic policy profile.
type: string
enum:
- whitelist
- blacklist
- throttling
example: whitelist
services:
description: Array of PCEF service IDs to include in the profile.
type: array
items:
type: string
example:
- service_123
ip_ranges:
description: Array of IP ranges in CIDR notation.
type: array
items:
type: string
example:
- 10.64.0.0/24
domains:
description: Array of domain names.
type: array
items:
type: string
example:
- netflix.com
limit_bw_kbps:
description: Bandwidth limit in kbps. Must be 512 or 1024, or null to remove.
type:
- integer
- 'null'
enum:
- 512
- 1024
- null
example: 1024
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/TrafficPolicyProfile'
'404':
$ref: '#/components/responses/ResourceNotFound'
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/uac_connections:
get:
description: Returns a list of your UAC connections. A UAC (User Agent Client) Connection registers Telnyx to your PBX
— the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound
SIP registration or you need Telnyx to maintain the registration.
summary: List UAC connections
operationId: ListUacConnections
tags:
- UAC Connections
x-group-parameters: 'true'
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/connections_FilterConsolidated'
- $ref: '#/components/parameters/connections_PageConsolidated'
- $ref: '#/components/parameters/connections_SortConnection'
responses:
'200':
description: Successful response with a list of UAC connections.
content:
application/json:
schema:
type: object
title: List UAC Connections Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/UacConnection'
meta:
$ref: '#/components/schemas/connections_PaginationMeta'
'400':
$ref: '#/components/responses/connections_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/connections_UnauthorizedResponse'
post:
description: Creates a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite
of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration
or you need Telnyx to maintain the registration.
summary: Create a UAC connection
operationId: CreateUacConnection
tags:
- UAC Connections
x-endpoint-cost: medium
parameters: []
requestBody:
description: Parameters that can be defined during UAC connection creation
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUacConnectionRequest'
responses:
'201':
description: Successful response with details about a UAC connection.
content:
application/json:
schema:
type: object
title: UAC Connection Response
properties:
data:
$ref: '#/components/schemas/UacConnection'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/connections_UnauthorizedResponse'
'422':
$ref: '#/components/responses/connections_UnprocessableEntityResponse'
/uac_connections/{id}:
delete:
description: Permanently deletes the specified UAC connection from your account.
summary: Delete a UAC connection
operationId: DeleteUacConnection
tags:
- UAC Connections
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a UAC connection.
content:
application/json:
schema:
type: object
title: UAC Connection Response
properties:
data:
$ref: '#/components/schemas/UacConnection'
'400':
$ref: '#/components/responses/connections_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/connections_UnauthorizedResponse'
'404':
$ref: '#/components/responses/connections_NotFoundResponse'
get:
description: Retrieves the details of an existing UAC connection.
summary: Retrieve a UAC connection
operationId: RetrieveUacConnection
tags:
- UAC Connections
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a UAC connection.
content:
application/json:
schema:
type: object
title: UAC Connection Response
properties:
data:
$ref: '#/components/schemas/UacConnection'
'400':
$ref: '#/components/responses/connections_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/connections_UnauthorizedResponse'
'404':
$ref: '#/components/responses/connections_NotFoundResponse'
patch:
description: Updates settings of an existing UAC connection.
summary: Update a UAC connection
operationId: UpdateUacConnection
tags:
- UAC Connections
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
requestBody:
description: Parameters that can be updated in a UAC connection
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateUacConnectionRequest'
responses:
'200':
description: Successful response with details about a UAC connection.
content:
application/json:
schema:
type: object
title: UAC Connection Response
properties:
data:
$ref: '#/components/schemas/UacConnection'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/connections_UnauthorizedResponse'
'404':
$ref: '#/components/responses/connections_NotFoundResponse'
'409':
description: Conflict. Another update to this connection is still in progress. Wait and retry the request later.
content:
application/json:
schema:
$ref: '#/components/schemas/connections_ErrorResponse'
example:
errors:
- detail: A previous update to this connection is still in progress. Please try again later.
'422':
$ref: '#/components/responses/connections_UnprocessableEntityResponse'
/uac_connections/{id}/actions/check_registration_status:
post:
description: Returns the live SIP registration status for a UAC connection. Reports whether the endpoint is currently
registered (`status`) and the timestamp of the last SIP registration event (`last_registration`).
summary: Check a UAC Connection Registration Status
operationId: CheckUacConnectionRegistrationStatus
tags:
- UAC Connections
parameters:
- name: id
in: path
description: Identifies the resource.
required: true
schema:
type: string
responses:
'200':
description: Successful response with details about a credential connection registration status.
content:
application/json:
schema:
type: object
title: Registration Status Response
properties:
data:
type: object
title: Registration Status
properties:
record_type:
type: string
description: Identifies the type of the resource.
example: registration_status
status:
type: string
description: The current registration status of your SIP connection
enum:
- Not Applicable
- Not Registered
- Failed
- Expired
- Registered
- Unregistered
sip_username:
type:
- string
- 'null'
description: The user name of the SIP connection
example: sip_username
ip_address:
type:
- string
- 'null'
description: The ip used during the SIP connection
example: 190.106.106.121
transport:
type:
- string
- 'null'
description: The protocol of the SIP connection
example: TCP
port:
type:
- integer
- 'null'
description: The port of the SIP connection
example: 37223
user_agent:
type:
- string
- 'null'
description: The user agent of the SIP connection
example: Z 5.4.12 v2.10.13.2-mod
last_registration:
type:
- string
- 'null'
description: ISO 8601 formatted date indicating when the resource was last updated.
example: '2018-02-02T22:25:27.521Z'
example:
record_type: registration_status
status: Expired
sip_username: rogerp
ip_address: 190.106.106.121
transport: UDP
port: 37223
user_agent: Z 5.4.12 v2.10.13.2-mod
last_registration: '2021-09-28T15:11:02'
examples:
registered:
summary: Endpoint is registered
value:
data:
record_type: registration_status
status: Registered
sip_username: '1006'
ip_address: 192.0.2.14
transport: UDP
port: 5060
user_agent: Linphone/4.0.0
last_registration: '2026-08-31T20:00:00Z'
unregistered:
summary: No active registration; all fields except record_type and status are null
value:
data:
record_type: registration_status
status: Unregistered
sip_username: null
ip_address: null
transport: null
port: null
user_agent: null
last_registration: null
'400':
$ref: '#/components/responses/connections_BadRequestResponse'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
'403':
$ref: '#/components/responses/connections_UnauthorizedResponse'
'404':
$ref: '#/components/responses/connections_NotFoundResponse'
/usage_reports:
get:
tags:
- Usage Reports (BETA)
summary: Get Telnyx product usage data (BETA)
description: Get Telnyx usage data by product, broken out by the specified dimensions
operationId: GetUsageReports
parameters:
- name: product
in: query
description: Telnyx product
required: true
schema:
type: string
examples:
product=wireless:
value: wireless
summary: wireless
product=messaging:
value: messaging
summary: messaging
- name: dimensions
in: query
description: Breakout by specified product dimensions
required: true
schema:
type: array
items:
type: string
examples:
dimensions=direction,currency,message_type:
value:
- direction
- currency
- message_type
summary: Dimensions aggregation list
- name: metrics
in: query
description: Specified product usage values
required: true
schema:
type: array
items:
type: string
examples:
metrics=cost,billed_sec:
value:
- cost
- billed_sec
summary: Metrics aggregation list
- name: start_date
in: query
description: 'The start date for the time range you are interested in. The maximum time range is 31 days. Format:
YYYY-MM-DDTHH:mm:ssZ'
required: false
schema:
type: string
examples:
start_date=2024-02-01T00:00:00Z:
value: '2024-02-01T00:00:00Z'
summary: Aggregate for records with timestamp starting at specified date and time.
- name: end_date
in: query
description: 'The end date for the time range you are interested in. The maximum time range is 31 days. Format: YYYY-MM-DDTHH:mm:ssZ'
required: false
schema:
type: string
examples:
end_date=2024-03-01T00:00:00Z:
value: '2024-03-01T00:00:00Z'
summary: Aggregate for records with timestamp ending at specified date and time.
- name: date_range
in: query
description: A more user-friendly way to specify the timespan you want to filter by. More options can be found in
the Telnyx API Reference docs.
required: false
schema:
type: string
examples:
date_range=today:
value: today
summary: today - Searches for records with timestamp starting at `00:00:00` of the current day
date_range=last_3_days:
value: last_3_days
summary: last_3_days - Searches for records with timestamp starting at `00:00:00` since 3 days ago
- name: filter
in: query
description: Filter records on dimensions
required: false
schema:
type: string
examples:
filter[currency]=USD:
value: filter[currency]=USD
summary: Filter currency on USD
filter[direction]=inbound:
value: filter[direction]=inbound
summary: Filter direction on Inbound
filter[country_code]=NLD:
value: filter[country_code]=NLD
summary: Filter country code on NLD
- name: managed_accounts
in: query
description: Return the aggregations for all Managed Accounts under the user making the request.
required: false
schema:
type: boolean
examples:
managed_accounts=true:
value: false
summary: Fetch aggregations for all Managed Accounts
- name: sort
description: Specifies the sort order for results
in: query
required: false
schema:
type: array
items:
type: string
examples:
sort=created_at:
value:
- created_at
summary: Sorts search results using the `created_at` date-time in ascending order
sort=-created_at:
value:
- -created_at
summary: Sorts search results using the `-created_at` date-time in descending order
- name: format
in: query
description: Specify the response format (csv or json). JSON is returned by default, even if not specified.
required: false
schema:
type: string
enum:
- csv
- json
examples:
format=json:
value: json
summary: Get the response in JSON format
format=csv:
value: csv
summary: Get the response in CSV format
- name: authorization_bearer
in: header
description: Bearer token used to authenticate the request.
schema:
type: string
description: Authenticates the request with your Telnyx API V2 KEY
- name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
title: Page[Number]
minimum: 1
type: integer
default: 1
size:
title: Page[Size]
maximum: 5000
type: integer
default: 20
examples:
page[number]=1&page[size]=20:
value:
number: 1
size: 20
summary: Returns the first page with 20 records per page (default pagination)
page[number]=2&page[size]=20:
value:
number: 2
size: 20
summary: Returns the second page with 20 records per page
page[number]=1&page[size]=50:
value:
number: 1
size: 50
summary: Returns the first page with 50 records per page (larger page size)
page[number]=5&page[size]=100:
value:
number: 5
size: 100
summary: Returns the fifth page with 100 records per page
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/UsageReportsResponse'
text/csv:
schema:
type: string
description: CSV formatted data
example: 'user_id,direction,product,cost,billed_sec
3ca7bd3d-7d82-4e07-9df4-009123068320,inbound,forking,0.000800,17.000000
...'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse'
x-latency-category: interactive
/usage_reports/options:
get:
tags:
- Usage Reports (BETA)
summary: Get Usage Reports query options (BETA)
description: Get the Usage Reports options for querying usage, including the products available and their respective
metrics and dimensions
operationId: ListUsageReportsOptions
parameters:
- name: product
in: query
description: Options (dimensions and metrics) for a given product. If none specified, all products will be returned.
required: false
schema:
type: string
examples:
product=wireless:
value: wireless
summary: Specify a product if you know what you're looking for
- name: authorization_bearer
in: header
description: Bearer token used to authenticate the request.
schema:
type: string
description: Authenticates the request with your Telnyx API V2 KEY
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/UsageReportsOptionsResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/usage_reports_usage_reports_ErrorResponse'
x-latency-category: interactive
/user/addresses:
get:
description: Returns a paginated list of your user addresses, with support for filtering and sorting.
summary: List all user addresses
operationId: FindUserAddress
tags:
- UserAddresses
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/user-addresses_PageConsolidated'
- $ref: '#/components/parameters/user-addresses_FilterConsolidated'
- $ref: '#/components/parameters/SortUserAddress'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserAddress'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Resource not found
x-latency-category: responsive
post:
description: Creates a new user address from the provided details and returns the created address.
summary: Creates a user address
operationId: CreateUserAddress
tags:
- UserAddresses
x-endpoint-cost: medium
parameters: []
requestBody:
description: Parameters that can be defined during user address creation
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserAddressCreate'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/UserAddress'
'422':
description: Bad request
x-latency-category: responsive
/user/addresses/{id}:
get:
description: Retrieves the details of an existing user address.
summary: Retrieve a user address
operationId: GetUserAddress
tags:
- UserAddresses
parameters:
- name: id
in: path
description: user address ID
required: true
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/UserAddress'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
x-latency-category: responsive
/user_addresses:
get:
description: Returns a paginated list of your user addresses, with support for filtering and sorting.
summary: List all user addresses
operationId: FindUserAddress
tags:
- UserAddresses
x-endpoint-cost: medium
parameters:
- $ref: '#/components/parameters/user-addresses_PageConsolidated_26a215df92'
- $ref: '#/components/parameters/user-addresses_FilterConsolidated_26a215df92'
- $ref: '#/components/parameters/SortUserAddress'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/user-addresses_UserAddress'
meta:
$ref: '#/components/schemas/PaginationMeta'
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Resource not found
post:
description: Creates a new user address from the provided details and returns the created address.
summary: Creates a user address
operationId: CreateUserAddress
tags:
- UserAddresses
x-endpoint-cost: medium
parameters: []
requestBody:
description: Parameters that can be defined during user address creation
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/user-addresses_UserAddressCreate'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/user-addresses_UserAddress'
'422':
description: Bad request
/user_addresses/{id}:
get:
description: Retrieves the details of an existing user address.
summary: Retrieve a user address
operationId: GetUserAddress
tags:
- UserAddresses
parameters:
- name: id
in: path
description: user address ID
required: true
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/user-addresses_UserAddress'
'401':
description: Unauthorized
'404':
description: Resource not found
'422':
description: Bad request
/user_tags:
get:
summary: List User Tags
operationId: GetUserTags
description: Returns the user tags defined on your account, with support for filtering. Tags help organize resources
such as phone numbers.
tags:
- User Tags
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[starts_with]'
schema:
type: object
properties:
starts_with:
type: string
example: my-tag
description: Filter tags by prefix
responses:
'200':
description: A list of your tags
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
outbound_profile_tags:
$ref: '#/components/schemas/UserTagList'
number_tags:
$ref: '#/components/schemas/UserTagList'
'401':
$ref: '#/components/responses/UnauthenticatedResponse'
/v2/bot_challenge:
post:
summary: Issue a bot challenge
description: Generates a reverse-CAPTCHA challenge used to gate the bot signup flow. A random active problem is selected
from the pool; math problems are returned obfuscated (case randomization, symbol injection, spacing noise) with an
unobfuscated rounding instruction appended, while string and binary problems are returned as-is. The response contains
a single-use nonce, the problem text, and the current terms-and-conditions and privacy-policy URLs, which must be
echoed back on the signup request. Challenges expire after a short window (10 minutes by default) and can only be
answered once. This endpoint is public and unauthenticated.
operationId: createBotChallenge
x-latency-category: responsive
tags:
- Bot Signup
x-endpoint-cost: light
security: []
requestBody:
required: false
description: Optional self-reported metadata about the LLM solving the challenge. Used for analytics only; it does
not influence which problem is served.
content:
application/json:
schema:
$ref: '#/components/schemas/BotChallengeRequest'
example:
llm_model_name: claude-opus-4
llm_parameter_count: 175B
llm_quantization: int8
responses:
'201':
description: Challenge issued.
content:
application/json:
schema:
$ref: '#/components/schemas/BotChallengeResponse'
example:
data:
nonce: c6feda4e-6501-4db9-a21f-665e5b4ce2ba
problem: W#hAt iS f!Ve tImEs sEvEn? Round to 0 decimal places. Omit units.
challenge_type: math
precision: 0
terms_and_conditions_url: https://telnyx.com/terms-and-conditions-of-service
privacy_policy_url: https://telnyx.com/privacy-policy
'400':
description: The JSON request body could not be parsed.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: There was a problem in the JSON you submitted. Please check your formatting and try again.
'503':
description: No bot challenge problems are currently available.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: No bot challenge problems available
/v2/bot_sessions:
get:
summary: Exchange a magic link token for a session
description: Consumes the one-time portal redirect (magic link) token emailed during bot signup and returns an API session.
The token is a UUIDv7 that encodes its creation time; it expires after a configurable validity window (15 minutes
by default) and is cleared on first use. Although the action creates a session, the route uses the GET verb because
it is opened from an email link. On first use the account is also initialized. For bot signup (freemium) accounts
the response is a minimal envelope containing only the `api_v2_token`; accounts that are permitted to use magic links
but are not freemium accounts may instead receive an extended session payload when additional steps (such as two-factor
authentication or identity verification) are required. This endpoint is public; the magic link token in the query
string is the credential.
operationId: createBotSession
x-latency-category: responsive
tags:
- Bot Signup
x-endpoint-cost: medium
security: []
parameters:
- name: email
in: query
required: true
description: Email address associated with the magic link token.
schema:
type: string
format: email
example: agent-owner@example.com
- name: portal_redirect_token
in: query
required: true
description: Single-use portal redirect (magic link) token, a UUIDv7 sent to the account owner's email.
schema:
type: string
format: uuid
example: 01890a7e-e2f7-7c3d-8dbb-9a2c5f3d1e0b
responses:
'200':
description: Session created. Bot signup accounts receive a minimal token envelope.
content:
application/json:
schema:
$ref: '#/components/schemas/BotSessionResponse'
example:
data:
api_v2_token: KEY0189A1B2C3D4E5F6071829AB3C4D5E_5FhZonmFvcw8Yq0dME27Bg
'400':
description: The account could not be initialized.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: Account could not be initialized
'401':
description: Missing or invalid email or token, expired token, or the account is not eligible to sign in (inactive,
suspended, not permitted to use magic links, or must use SSO).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: Your sign-in link has expired. Please request a new one-time sign-in link.
'403':
description: Request blocked by security policy (for example, the caller's country is not accepted).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: Your registration cannot be accepted as it does not comply with our security standards. You may
contact support for assistance.
'404':
description: Bot signup is not available (freemium master switch disabled or the caller's country is not enabled).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
/v2/bot_signup:
post:
summary: Register via bot signup
description: Creates a freemium Telnyx account through the agentic signup flow. The request must carry a valid answer
to a previously issued bot challenge (`bot_challenge_nonce` and `bot_challenge_answer`), accept the terms of service,
and echo the exact terms-and-conditions and privacy-policy URLs returned by the challenge endpoint. When EU consent
enforcement is enabled, `terms_of_service_eu` and `terms_and_conditions_eu_url` are also required. On success a one-time
sign-in (magic) link is emailed to the address provided; if the email address belongs to an existing account, a sign-in
link is sent instead of creating a duplicate account. `email` may only be omitted when placeholder-email registration
is enabled server-side. This endpoint is public and unauthenticated, gated by the freemium feature flags and per-country
availability, and subject to per-IP and per-domain registration limits.
operationId: createBotSignup
x-latency-category: responsive
tags:
- Bot Signup
x-endpoint-cost: medium
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BotSignupRequest'
example:
email: agent-owner@example.com
terms_of_service: true
terms_and_conditions_url: https://telnyx.com/terms-and-conditions-of-service
privacy_policy_url: https://telnyx.com/privacy-policy
bot_challenge_nonce: c6feda4e-6501-4db9-a21f-665e5b4ce2ba
bot_challenge_answer: '35'
responses:
'200':
description: Registration accepted and a magic link emailed.
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
example:
success: true
message: A one-time sign-in link has been sent to your email address.
'400':
description: Bot challenge parameters missing or verification failed, terms of service not accepted, or terms/privacy
URLs missing or not matching the expected values.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: Bot challenge parameters are required
'403':
description: Registration blocked by security policy (for example, registration from the caller's country is not
accepted).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: Your registration cannot be accepted as it does not comply with our security standards. You may
contact support for assistance.
'404':
description: Bot signup is not available (freemium master switch disabled or the caller's country is not enabled).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
'422':
description: Validation failed (for example an invalid email address), or the IP address has reached its bot signup
limit.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: Email is invalid
source:
pointer: /email
meta:
url: https://developers.telnyx.com/docs/overview/errors/10027
'429':
description: Too many registrations from this email domain.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- code: '10011'
title: Too many requests
detail: You have exceeded the maximum number of allowed requests.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10011
/v2/bot_signup/resend_magic_link:
post:
summary: Resend a bot signup magic link
description: Resends the one-time sign-in (magic) link for an eligible bot signup account. Eligibility (account exists,
was registered through bot signup, is active, and has not exceeded the resend limit or rate window) is evaluated server-side;
the response is intentionally uniform and does not reveal whether the account exists or whether a link was actually
sent. This endpoint is public and unauthenticated, gated by the freemium feature flags and per-country availability.
operationId: resendBotSignupMagicLink
x-latency-category: responsive
tags:
- Bot Signup
x-endpoint-cost: light
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResendMagicLinkRequest'
example:
email: agent-owner@example.com
responses:
'200':
description: Uniform acknowledgement, returned whether or not a link was sent.
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
example:
success: true
message: A one-time sign-in link has been sent to your email address.
'400':
description: The JSON request body could not be parsed.
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: There was a problem in the JSON you submitted. Please check your formatting and try again.
'403':
description: Request blocked by security policy (for example, the caller's country is not accepted).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- detail: Your registration cannot be accepted as it does not comply with our security standards. You may
contact support for assistance.
'404':
description: Bot signup is not available (freemium master switch disabled or the caller's country is not enabled).
content:
application/json:
schema:
$ref: '#/components/schemas/bot-signup_ErrorResponse'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
/v2/mobile_phone_numbers:
get:
summary: List Mobile Phone Numbers
operationId: listMobilePhoneNumbers
tags:
- Mobile Phone Numbers
parameters:
- name: page[number]
in: query
description: The page number to load
schema:
type: integer
- name: page[size]
in: query
description: The size of the page
schema:
type: integer
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MobilePhoneNumber'
meta:
$ref: '#/components/schemas/mobile_phone_numbers_PaginationMeta'
'401':
description: Unauthorized
description: Retrieve a paginated list of mobile phone numbers on your account.
/v2/mobile_phone_numbers/{id}:
get:
summary: Retrieve a Mobile Phone Number
operationId: retrieveMobilePhoneNumber
tags:
- Mobile Phone Numbers
parameters:
- name: id
in: path
required: true
description: The ID of the mobile phone number
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MobilePhoneNumber'
'404':
description: Resource not found
description: Retrieve the details of a specific mobile phone number.
patch:
summary: Update a Mobile Phone Number
operationId: updateMobilePhoneNumber
tags:
- Mobile Phone Numbers
parameters:
- name: id
in: path
required: true
description: The ID of the mobile phone number
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MobilePhoneNumberUpdate'
example:
noise_suppression: false
inbound_call_screening: disabled
caller_id_name_enabled: false
tags:
- string
call_forwarding:
forwarding_type: always
call_forwarding_enabled: false
cnam_listing:
cnam_listing_enabled: false
call_recording:
inbound_call_recording_enabled: false
inbound_call_recording_channels: single
inbound_call_recording_format: wav
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MobilePhoneNumber'
'422':
description: Unprocessable Entity
description: Update the settings of a specific mobile phone number.
/v2/mobile_voice_connections:
get:
summary: List Mobile Voice Connections
operationId: listMobileVoiceConnections
tags:
- Mobile Voice Connections
parameters:
- name: page[number]
in: query
description: The page number to load
schema:
type: integer
- name: page[size]
in: query
description: The size of the page
schema:
type: integer
- name: filter[connection_name][contains]
in: query
description: Filter by connection name containing the given string
schema:
type: string
- name: sort
in: query
description: Sort by field (e.g., created_at, connection_name, active). Prefix with - for descending order.
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MobileVoiceConnection'
meta:
$ref: '#/components/schemas/mobile_voice_connections_PaginationMeta'
'401':
description: Unauthorized
description: Retrieve a paginated list of mobile voice connections on your account.
post:
summary: Create a Mobile Voice Connection
operationId: createMobileVoiceConnection
tags:
- Mobile Voice Connections
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MobileVoiceConnectionCreate'
example:
active: true
connection_name: Telnyx Mobile Voice IMS
webhook_api_version: '2'
tags:
- string
outbound:
channel_limit: 0
outbound_voice_profile_id: string
inbound:
channel_limit: 0
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MobileVoiceConnection'
'403':
description: Unauthorized or Limit Reached
'422':
description: Unprocessable Entity
description: Creates a new mobile voice connection with the provided configuration and returns the created connection.
/v2/mobile_voice_connections/{id}:
delete:
summary: Delete a Mobile Voice Connection
operationId: deleteMobileVoiceConnection
tags:
- Mobile Voice Connections
parameters:
- name: id
in: path
required: true
description: The ID of the mobile voice connection
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MobileVoiceConnection'
'404':
description: Resource not found
description: Delete a mobile voice connection from your account.
get:
summary: Retrieve a Mobile Voice Connection
operationId: retrieveMobileVoiceConnection
tags:
- Mobile Voice Connections
parameters:
- name: id
in: path
required: true
description: The ID of the mobile voice connection
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MobileVoiceConnection'
'404':
description: Resource not found
description: Retrieve the details of a specific mobile voice connection.
patch:
summary: Update a Mobile Voice Connection
operationId: updateMobileVoiceConnection
tags:
- Mobile Voice Connections
parameters:
- name: id
in: path
required: true
description: The ID of the mobile voice connection
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MobileVoiceConnectionUpdate'
example:
active: false
connection_name: string
webhook_api_version: '1'
webhook_timeout_secs: 0
tags:
- string
outbound:
channel_limit: 0
outbound_voice_profile_id: string
inbound:
channel_limit: 0
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/MobileVoiceConnection'
'404':
description: Resource not found
'409':
description: Conflict. Another update to this connection is still in progress. Wait and retry the request later.
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
detail:
type: string
example:
errors:
- detail: A previous update to this connection is still in progress. Please try again later.
'422':
description: Unprocessable Entity
description: Update the settings of a specific mobile voice connection.
/v2/payment/stored_payment_transactions:
post:
summary: Create a stored payment transaction
operationId: createStoredPaymentTransaction
tags:
- Stored Payment Transactions
x-endpoint-cost: light
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StoredPaymentTransactionRequest'
example:
amount: '120.00'
responses:
'200':
description: Stored payment transaction created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/StoredPaymentTransactionResponse'
example:
data:
id: de06811a-2e43-4561-af5a-7d0a26e20aaa
record_type: transaction
amount_cents: 12000
processor_status: submitted_for_settlement
amount_currency: USD
created_at: '2026-02-25T10:00:00Z'
auto_recharge: false
transaction_processing_type: stored_payment
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stored-payment-transactions_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/stored-payment-transactions_ErrorResponse'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'422':
description: Unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/stored-payment-transactions_ErrorResponse'
example:
errors:
- code: '10027'
title: Invalid amount format
detail: Amount must include dollars and cents (e.g. "120.00").
meta:
url: https://developers.telnyx.com/docs/overview/errors/10027
source:
pointer: /
x-latency-category: responsive
description: Create a transaction that charges a stored payment method on the account.
/v2/whatsapp/business_accounts:
get:
tags:
- Whatsapp Business Accounts
summary: List Whatsapp Business Accounts
operationId: ListWabas
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: List of Whatsapp Business Accounts
$ref: '#/components/responses/messaging_WabasListResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns WhatsApp Business Accounts linked to the authenticated Telnyx account.
/v2/whatsapp/business_accounts/{id}:
delete:
tags:
- Whatsapp Business Accounts
summary: Delete a Whatsapp Business Account
operationId: deleteWaba
parameters:
- $ref: '#/components/parameters/WabaId'
responses:
'204':
description: Deleted
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Unlinks and deletes the specified WhatsApp Business Account resource from Telnyx.
get:
tags:
- Whatsapp Business Accounts
summary: Get a single Whatsapp Business Account
operationId: GetSingleWaba
parameters:
- $ref: '#/components/parameters/WabaId'
responses:
'200':
description: Whatsapp Business Account details
$ref: '#/components/responses/WabaSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the configuration and status of the specified WhatsApp Business Account.
/v2/whatsapp/business_accounts/{id}/phone_numbers:
get:
tags:
- Whatsapp Business Accounts
summary: List phone numbers for a WABA
operationId: ListWabaPhones
parameters:
- $ref: '#/components/parameters/WabaId'
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: List of phone numbers
$ref: '#/components/responses/messaging_WhatsappPhonesListResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns phone numbers registered under the specified WhatsApp Business Account.
post:
tags:
- Whatsapp Phone Numbers
summary: Initialize Whatsapp phone number verification
operationId: InitializeWhatsappVerification
parameters:
- $ref: '#/components/parameters/WabaId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappPhoneNumberVerificationRequest'
example:
phone_number: string
display_name: string
verification_method: sms
language: en_US
responses:
'204':
description: Verification initiated
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Starts verification of a phone number for the specified WhatsApp Business Account using the requested verification
method.
/v2/whatsapp/business_accounts/{id}/settings:
get:
tags:
- Whatsapp Business Accounts
summary: Get WABA settings
operationId: GetWabaSettings
parameters:
- $ref: '#/components/parameters/WabaId'
responses:
'200':
description: WABA settings
$ref: '#/components/responses/WabaSettingsResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns account-level settings for the specified WhatsApp Business Account.
patch:
tags:
- Whatsapp Business Accounts
summary: Update WABA settings
operationId: PatchWabaSettings
parameters:
- $ref: '#/components/parameters/WabaId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchWabaSettingsRequest'
responses:
'200':
description: Updated settings
$ref: '#/components/responses/WabaSettingsResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the supplied account-level settings for the specified WhatsApp Business Account.
/v2/whatsapp/message_templates:
get:
tags:
- Whatsapp Message Templates
summary: List Whatsapp message templates
operationId: ListWhatsappTemplates
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter[waba_id]
in: query
schema:
type: string
description: Filter by WABA ID
- name: filter[category]
in: query
schema:
type: string
enum:
- MARKETING
- UTILITY
- AUTHENTICATION
description: Filter by category
- name: filter[status]
in: query
schema:
type: string
description: Filter by template status
- name: filter[search]
in: query
schema:
type: string
description: Search templates by name
responses:
'200':
description: Whatsapp templates list
$ref: '#/components/responses/messaging_WhatsappTemplateListResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns WhatsApp message templates owned by the authenticated account, including their current review state.
post:
tags:
- Whatsapp Message Templates
summary: Create a Whatsapp message template
operationId: PostWhatsappTemplate
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappCreateTemplateRequest'
responses:
'201':
description: Template created
$ref: '#/components/responses/WhatsappTemplateSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Creates a WhatsApp message template for review and subsequent use in template messages.
/v2/whatsapp/phone_numbers:
get:
tags:
- Whatsapp Phone Numbers
summary: List Whatsapp phone numbers
operationId: ListPhoneNumbers
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Phone numbers
$ref: '#/components/responses/messaging_WhatsappPhonesListResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns WhatsApp phone numbers linked to the authenticated Telnyx account.
/v2/whatsapp/phone_numbers/{phone_number}:
delete:
tags:
- Whatsapp Phone Numbers
summary: Delete a Whatsapp phone number
operationId: DeleteWhatsappPhoneNumber
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'204':
description: Phone number was successfully deleted
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Removes the specified phone number from Telnyx WhatsApp management.
get:
tags:
- Whatsapp Phone Numbers
x-hidden: true
summary: Retrieve a WhatsApp phone number
operationId: GetWhatsappPhoneNumber
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
$ref: '#/components/responses/WhatsappPhoneSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns one WhatsApp phone number linked to the authenticated Telnyx account. For a coexistence number
in the `syncing` state, the response includes `sync_progress`.
/v2/whatsapp/phone_numbers/{phone_number}/calling_settings:
get:
tags:
- Whatsapp Phone Numbers
summary: Get calling settings for a phone number
operationId: GetWhatsappCallingSettings
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Calling settings
$ref: '#/components/responses/WhatsappCallingSettingsResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the WhatsApp calling configuration for the specified phone number.
patch:
tags:
- Whatsapp Phone Numbers
summary: Enable or disable Whatsapp calling for a phone number
operationId: PatchWhatsappCallingSettings
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappPatchCallingSettingsRequest'
example:
enabled: false
responses:
'200':
description: Updated calling settings
$ref: '#/components/responses/WhatsappCallingSettingsResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Enables or disables WhatsApp calling for the specified phone number.
/v2/whatsapp/phone_numbers/{phone_number}/conversation_window:
get:
tags:
- Whatsapp Phone Numbers
summary: Get conversation window status for a phone number
description: Returns whether the 24-hour conversation window is currently open for a given source/destination pair.
If window_active is false, only template messages may be sent.
operationId: GetWhatsappConversationWindow
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
- name: destination_number
in: query
required: true
schema:
type: string
example: '+353894650851'
description: Destination phone number in E.164 format
responses:
'200':
$ref: '#/components/responses/WhatsappConversationWindowResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
/v2/whatsapp/phone_numbers/{phone_number}/conversational_components:
get:
tags:
- Whatsapp Phone Numbers
summary: Get phone number conversational components
operationId: GetWhatsappConversationalComponents
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Conversational Components
$ref: '#/components/responses/WhatsappConversationalComponentSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the conversational components configured for the specified WhatsApp phone number.
patch:
tags:
- Whatsapp Phone Numbers
summary: Update phone number conversational components
operationId: PatchWhatsappConversationalComponents
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappUpdateConversationalComponentRequest'
example:
commands:
- command: string
description: string
ice_breakers:
- string
responses:
'200':
description: Updated profile
$ref: '#/components/responses/WhatsappConversationalComponentSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the conversational components configured for the specified WhatsApp phone number.
/v2/whatsapp/phone_numbers/{phone_number}/profile:
get:
tags:
- Whatsapp Phone Numbers
summary: Get phone number business profile
operationId: GetWhatsappProfile
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Profile
$ref: '#/components/responses/WhatsappProfileSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the business profile displayed for the specified WhatsApp phone number.
patch:
tags:
- Whatsapp Phone Numbers
summary: Update phone number business profile
operationId: PatchWhatsappProfile
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappUpdateProfileRequest'
example:
display_name: string
about: string
description: string
category: string
email: string
website: string
address: string
profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
responses:
'200':
description: Updated profile
$ref: '#/components/responses/WhatsappProfileSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the supplied business-profile fields for the specified WhatsApp phone number.
/v2/whatsapp/phone_numbers/{phone_number}/profile/photo:
delete:
tags:
- Whatsapp Phone Numbers
summary: Delete Whatsapp profile photo
operationId: DeleteWhatsappProfilePhoto
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'204':
description: Photo deleted
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Removes the business-profile photo from the specified WhatsApp phone number.
get:
tags:
- Whatsapp Phone Numbers
summary: Get Whatsapp profile photo
operationId: GetWhatsappProfilePhoto
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Profile photo
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappProfilePhotoResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the current business-profile photo for the specified WhatsApp phone number.
post:
tags:
- Whatsapp Phone Numbers
summary: Upload Whatsapp profile photo
operationId: PostWhatsappProfilePhoto
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: Image file (JPEG recommended, max 10 MB)
example:
file: string
responses:
'200':
description: Profile with updated photo
$ref: '#/components/responses/WhatsappProfileSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Uploads and assigns a business-profile photo to the specified WhatsApp phone number.
/v2/whatsapp/phone_numbers/{phone_number}/resend_verification:
post:
tags:
- Whatsapp Phone Numbers
summary: Resend verification code
operationId: ResendWhatsappVerification
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappResendVerificationRequest'
example:
verification_method: sms
responses:
'204':
description: Code resent
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Requests a new verification code for the specified WhatsApp phone number.
/v2/whatsapp/phone_numbers/{phone_number}/verify:
post:
tags:
- Whatsapp Phone Numbers
summary: Submit verification code for a phone number
operationId: VerifyWhatsappPhoneNumber
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappVerifyCodeRequest'
example:
code: string
responses:
'204':
description: Verified successfully
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Submits the verification code received for the specified WhatsApp phone number.
/v2/whatsapp/user_data:
get:
tags:
- Whatsapp Business Accounts
summary: Fetch Whatsapp user data
operationId: GetWhatsappUserData
responses:
'200':
description: Whatsapp user data
$ref: '#/components/responses/WhatsappUserDataResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the WhatsApp user-data settings associated with the authenticated Telnyx account.
patch:
tags:
- Whatsapp Business Accounts
summary: Update Whatsapp user data
operationId: PatchWhatsappUserData
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchWhatsappUserDataRequest'
example:
webhook_url: https://example.com
webhook_failover_url: https://example.com
responses:
'200':
description: Updated user data
$ref: '#/components/responses/WhatsappUserDataResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the supplied WhatsApp user-data settings for the authenticated Telnyx account.
/v2/whatsapp_message_templates/{id}:
delete:
tags:
- Whatsapp Message Templates
summary: Delete a Whatsapp message template
operationId: DeleteWhatsappTemplate
parameters:
- $ref: '#/components/parameters/WhatsappTemplateId'
responses:
'204':
description: Deleted
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Deletes the specified WhatsApp message template.
get:
tags:
- Whatsapp Message Templates
summary: Get a Whatsapp message template by ID
operationId: GetWhatsappTemplate
parameters:
- $ref: '#/components/parameters/WhatsappTemplateId'
responses:
'200':
description: Template details
$ref: '#/components/responses/WhatsappTemplateSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Returns the content, components, language, and current review state of the specified WhatsApp message template.
patch:
tags:
- Whatsapp Message Templates
summary: Update a Whatsapp message template
operationId: PatchWhatsappTemplate
parameters:
- $ref: '#/components/parameters/WhatsappTemplateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappUpdateTemplateRequest'
responses:
'200':
description: Updated template
$ref: '#/components/responses/WhatsappTemplateSingleResponse'
4XX:
$ref: '#/components/responses/messaging_GenericErrorResponse_0b38e7044b'
description: Updates the editable fields of the specified WhatsApp message template.
/verifications/by_phone_number/{phone_number}:
get:
tags:
- Verify
summary: List verifications by phone number
operationId: ListVerifications
parameters:
- required: true
description: The phone number associated with the verifications to retrieve.
schema:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
name: phone_number
in: path
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ListVerificationsResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Returns a paginated list of verifications associated with the specified phone number.
/verifications/by_phone_number/{phone_number}/actions/verify:
post:
tags:
- Verify
summary: Verify verification code by phone number
operationId: VerifyVerificationCodeByPhoneNumber
parameters:
- required: true
description: The phone number associated with the verification code being verified.
schema:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
name: phone_number
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyVerificationCodeRequestByPhoneNumber'
required: true
responses:
'200':
description: Expected verify response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyVerificationCodeResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Submits a verification code for the specified phone number and Verify profile. The response indicates whether
the code was accepted or rejected.
/verifications/call:
post:
tags:
- Verify
summary: Trigger Call verification
operationId: CreateVerificationCall
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationRequestCall'
required: true
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationResponse'
example:
data:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
type: call
record_type: verification
phone_number: '+13035551234'
verify_profile_id: 12ade33a-21c0-473b-b055-b3c836e1c292
timeout_secs: 300
status: pending
created_at: '2020-09-14T17:03:32.965812'
updated_at: '2020-09-14T17:03:32.965812'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Starts a verification for the specified phone number and delivers its code in a voice call using the selected
Verify profile. Returns the pending verification record.
/verifications/flashcall:
post:
tags:
- Verify
summary: Trigger Flash call verification
operationId: CreateFlashcallVerification
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationRequest'
required: true
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationResponse'
example:
data:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
type: flashcall
record_type: verification
phone_number: '+13035551234'
verify_profile_id: 12ade33a-21c0-473b-b055-b3c836e1c292
timeout_secs: 300
status: pending
created_at: '2020-09-14T17:03:32.965812'
updated_at: '2020-09-14T17:03:32.965812'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Starts a verification for the specified phone number and places a brief call with the code embedded in
the caller ID. Returns the pending verification record.
/verifications/sms:
post:
tags:
- Verify
summary: Trigger SMS verification
operationId: CreateVerificationSms
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationRequestSMS'
required: true
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Starts a verification for the specified phone number and sends its code by SMS using the selected Verify
profile. Returns the pending verification record.
/verifications/whatsapp:
post:
tags:
- Verify
summary: Trigger WhatsApp verification
operationId: CreateWhatsappVerification
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationRequestWhatsapp'
required: true
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerificationResponse'
example:
data:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
type: whatsapp
record_type: verification
phone_number: '+13035551234'
verify_profile_id: 12ade33a-21c0-473b-b055-b3c836e1c292
custom_code: '43612'
timeout_secs: 300
status: pending
created_at: '2020-09-14T17:03:32.965812'
updated_at: '2020-09-14T17:03:32.965812'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Starts a verification for the specified phone number and sends its code over WhatsApp using the selected
Verify profile. Returns the pending verification record.
/verifications/{verification_id}:
get:
tags:
- Verify
summary: Retrieve verification
operationId: RetrieveVerification
parameters:
- required: true
description: The identifier of the verification to retrieve.
schema:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
name: verification_id
in: path
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/RetrieveVerificationResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Returns the verification identified by ID, including its channel, phone number, Verify profile, timeout,
and current status.
/verifications/{verification_id}/actions/verify:
post:
tags:
- Verify
summary: Verify verification code by ID
operationId: VerifyVerificationCodeById
parameters:
- required: true
description: The identifier of the verification to retrieve.
schema:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
name: verification_id
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyVerificationCodeRequestById'
required: true
responses:
'200':
description: Expected verify response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyVerificationCodeResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Checks the supplied code, or the supplied status for a custom-code verification, against the verification
identified by ID. The response indicates whether the verification was accepted or rejected.
/verified_numbers:
get:
tags:
- Verified Numbers
x-group-parameters: 'true'
summary: List all Verified Numbers
description: Gets a paginated list of Verified Numbers.
operationId: ListVerifiedNumbers
parameters:
- name: page
in: query
required: false
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Use page[size] and page[number] in the query string.
Originally: page[size], page[number]'
schema:
type: object
properties:
size:
title: page[size]
type: integer
default: 25
number:
title: page[number]
type: integer
default: 1
responses:
'200':
description: Expected response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ListVerifiedNumbersResponse'
'400':
$ref: '#/components/responses/verified-numbers_GenericErrorResponse'
'401':
$ref: '#/components/responses/UnauthorizedRequestErrorResponse'
'422':
$ref: '#/components/responses/verified-numbers_UnprocessableEntityErrorResponse'
post:
tags:
- Verified Numbers
summary: Request phone number verification
description: Initiates phone number verification procedure. Supports DTMF extension dialing for voice calls to numbers
behind IVR systems.
operationId: CreateVerifiedNumber
requestBody:
content:
application/json:
schema:
title: Create Verified Number Request
type: object
required:
- phone_number
- verification_method
properties:
phone_number:
example: '+15551234567'
type: string
verification_method:
description: Verification method.
type: string
enum:
- sms
- call
example: sms
extension:
example: ww243w1
type: string
description: 'Optional DTMF extension sequence to dial after the call is answered. This parameter enables
verification of phone numbers behind IVR systems that require extension dialing. Valid characters: digits
0-9, letters A-D, symbols * and #. Pauses: w = 0.5 second pause, W = 1 second pause. Maximum length: 50
characters. Only works with ''call'' verification method.'
default: null
maxLength: 50
pattern: ^[0-9A-D*#wW]*$
examples:
sms_verification:
summary: SMS verification
value:
phone_number: '+15551234567'
verification_method: sms
call_verification:
summary: Call verification
value:
phone_number: '+15551234567'
verification_method: call
call_with_extension:
summary: Call verification with DTMF extension
description: Example for verifying a number behind an IVR system that requires extension dialing
value:
phone_number: '+15551234567'
verification_method: call
extension: ww243w1
required: true
responses:
'200':
description: Expected response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateVerifiedNumberResponse'
'400':
$ref: '#/components/responses/verified-numbers_GenericErrorResponse'
'401':
$ref: '#/components/responses/UnauthorizedRequestErrorResponse'
'422':
$ref: '#/components/responses/verified-numbers_UnprocessableEntityErrorResponse'
/verified_numbers/{phone_number}:
delete:
tags:
- Verified Numbers
summary: Delete a verified number
operationId: DeleteVerifiedNumber
parameters:
- required: true
description: The phone number being deleted.
schema:
example: '+15551234567'
type: string
description: +E164 formatted phone number.
name: phone_number
in: path
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifiedNumberResponseDataWrapper'
'400':
$ref: '#/components/responses/verified-numbers_GenericErrorResponse'
'401':
$ref: '#/components/responses/UnauthorizedRequestErrorResponse'
'404':
$ref: '#/components/responses/verified-numbers_NotFoundErrorResponse'
description: Remove a verified number from your account.
get:
tags:
- Verified Numbers
summary: Retrieve a verified number
operationId: GetVerifiedNumber
parameters:
- required: true
description: The phone number being requested.
schema:
example: '+15551234567'
type: string
description: +E164 formatted phone number.
name: phone_number
in: path
responses:
'200':
description: Expected verifications response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifiedNumberResponseDataWrapper'
'400':
$ref: '#/components/responses/verified-numbers_GenericErrorResponse'
'401':
$ref: '#/components/responses/UnauthorizedRequestErrorResponse'
'404':
$ref: '#/components/responses/verified-numbers_NotFoundErrorResponse'
description: Retrieve the details of a verified number on your account.
/verified_numbers/{phone_number}/actions/verify:
post:
tags:
- Verified Numbers
summary: Submit verification code
operationId: VerifyVerificationCode
parameters:
- required: true
description: The phone number being verified.
schema:
example: '+15551234567'
type: string
description: +E164 formatted phone number.
name: phone_number
in: path
requestBody:
content:
application/json:
schema:
title: Verify Verification Code Request
type: object
required:
- verification_code
properties:
verification_code:
example: '123456'
type: string
required: true
responses:
'200':
description: Expected response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifiedNumberResponseDataWrapper'
'400':
$ref: '#/components/responses/verified-numbers_GenericErrorResponse'
'401':
$ref: '#/components/responses/UnauthorizedRequestErrorResponse'
'404':
$ref: '#/components/responses/verified-numbers_NotFoundErrorResponse'
'422':
$ref: '#/components/responses/verified-numbers_UnprocessableEntityErrorResponse'
description: Submit the verification code received via the selected verification method to verify a phone number.
/verify_profiles:
get:
tags:
- Verify
x-group-parameters: 'true'
summary: List all Verify profiles
description: Gets a paginated list of Verify profiles.
operationId: ListProfiles
parameters:
- name: filter
in: query
required: false
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[name]'
schema:
type: object
properties:
name:
title: filter[name]
type: string
description: Optional filter for profile names.
- name: page
in: query
required: false
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
title: page[size]
type: integer
default: 25
number:
title: page[number]
type: integer
default: 1
responses:
'200':
description: Expected Verify profile response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ListVerifyProfilesResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
post:
tags:
- Verify
summary: Create a Verify profile
description: Creates a new Verify profile to associate verifications with.
operationId: CreateVerifyProfile
requestBody:
content:
application/json:
schema:
title: Create Verify Profile Request
type: object
required:
- name
properties:
name:
example: Test Profile
type: string
language:
type: string
example: en-US
webhook_url:
type: string
example: http://example.com/webhook
webhook_failover_url:
type: string
example: http://example.com/webhook/failover
sms:
type: object
$ref: '#/components/schemas/CreateVerifyProfileSMSRequest'
additionalProperties: true
call:
type: object
$ref: '#/components/schemas/CreateVerifyProfileCallRequest'
additionalProperties: true
flashcall:
type: object
$ref: '#/components/schemas/CreateVerifyProfileSettingsRequest'
additionalProperties: true
whatsapp:
type: object
$ref: '#/components/schemas/CreateVerifyProfileSettingsWhatsAppRequest'
additionalProperties: true
daily_spend_limit_enabled:
type: boolean
default: false
description: Whether the daily spend limit is enforced for this verify profile.
example: true
daily_spend_limit:
type: number
minimum: 0
description: The maximum daily spend allowed on this verify profile, in USD.
example: 100.0
required: true
responses:
'200':
description: Expected Verify profile response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyProfileResponseDataWrapper'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
/verify_profiles/templates:
get:
tags:
- Verify
summary: Retrieve Verify profile message templates
description: List all Verify profile message templates.
operationId: ListProfileMessageTemplates
responses:
'200':
description: Expected Verify profile message template response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/ListVerifyProfileMessageTemplateResponse'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
'500':
$ref: '#/components/responses/verify_GenericErrorResponse'
post:
tags:
- Verify
summary: Create message template
description: Create a new Verify profile message template.
operationId: CreateMessageTemplate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMessageTemplateRequest'
required: true
responses:
'200':
description: Expected message template response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/MessageTemplateResponseDataWrapper'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
/verify_profiles/templates/{template_id}:
patch:
tags:
- Verify
summary: Update message template
description: Update an existing Verify profile message template.
operationId: UpdateMessageTemplate
parameters:
- required: true
description: The identifier of the message template to update.
schema:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
name: template_id
in: path
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMessageTemplateRequest'
required: true
responses:
'200':
description: Expected message template response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/MessageTemplateResponseDataWrapper'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
/verify_profiles/{verify_profile_id}:
delete:
tags:
- Verify
summary: Delete Verify profile
operationId: DeleteProfile
parameters:
- required: true
description: The identifier of the Verify profile to delete.
schema:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
name: verify_profile_id
in: path
responses:
'200':
description: Expected Verify profile response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyProfileResponseDataWrapper'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Deletes the specified Verify profile and returns the deleted profile record.
get:
tags:
- Verify
summary: Retrieve Verify profile
description: Returns the details of a single Verify profile by its ID, including its verification channel configuration.
operationId: GetVerifyProfile
parameters:
- required: true
description: The identifier of the Verify profile to retrieve.
schema:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
name: verify_profile_id
in: path
responses:
'200':
description: Expected Verify profile response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyProfileResponseDataWrapper'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
patch:
tags:
- Verify
summary: Update Verify profile
operationId: UpdateVerifyProfile
parameters:
- required: true
description: The identifier of the Verify profile to update.
schema:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
name: verify_profile_id
in: path
requestBody:
content:
application/json:
schema:
title: Update Verify Profile Request
type: object
properties:
name:
example: Test Profile
type: string
webhook_url:
type: string
example: http://example.com/webhook
webhook_failover_url:
type: string
example: http://example.com/webhook/failover
sms:
type: object
$ref: '#/components/schemas/UpdateVerifyProfileSMSRequest'
additionalProperties: true
call:
type: object
$ref: '#/components/schemas/UpdateVerifyProfileCallRequest'
additionalProperties: true
whatsapp:
type: object
$ref: '#/components/schemas/UpdateVerifyProfileSettingsWhatsAppRequest'
additionalProperties: true
language:
type: string
example: en-US
daily_spend_limit_enabled:
type: boolean
description: Whether the daily spend limit is enforced for this verify profile.
example: true
daily_spend_limit:
type: number
minimum: 0
description: The maximum daily spend allowed on this verify profile, in USD.
example: 100.0
required: true
responses:
'200':
description: Expected Verify profile response to a valid request.
content:
application/json:
schema:
$ref: '#/components/schemas/VerifyProfileResponseDataWrapper'
'400':
$ref: '#/components/responses/verify_GenericErrorResponse'
description: Updates the specified Verify profile's name, webhook destinations, language, daily spend limits, or channel-specific
settings. Returns the updated profile.
/virtual_cross_connects:
get:
summary: List all Virtual Cross Connects
description: Returns a paginated list of the virtual cross connects on your account, with support for filtering.
operationId: ListVirtualCrossConnects
tags:
- Virtual Cross Connects
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]'
schema:
type: object
properties:
network_id:
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
description: The associated network id to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/VirtualCrossConnectCombined'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a Virtual Cross Connect
description: Create a new Virtual Cross Connect. For AWS and GCE, you have the option of creating the primary
connection first and the secondary connection later. You also have the option of disabling the primary and/or secondary
connections at any time and later re-enabling them. With Azure, you do not have this option. Azure requires both the
primary and secondary connections to be created at the same time and they can not be independantly disabled.
operationId: CreateVirtualCrossConnect
tags:
- Virtual Cross Connects
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualCrossConnectCreate'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VirtualCrossConnectCombined'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/virtual_cross_connects/coverage:
get:
summary: List Virtual Cross Connect Cloud Coverage
description: List Virtual Cross Connects Cloud Coverage. This endpoint shows which cloud regions are available
for the `location_code` your Virtual Cross Connect will be provisioned in.
operationId: ListVirtualCrossConnectCoverage
tags:
- Virtual Cross Connects
parameters:
- name: filters
in: query
style: deepObject
explode: true
description: 'Consolidated filters parameter (deepObject style). Originally: filters[available_bandwidth][contains]'
schema:
type: object
properties:
available_bandwidth:
oneOf:
- type: integer
description: Filter by exact available bandwidth match
- type: object
properties:
contains:
type: integer
description: Filter by available bandwidth containing the specified value
additionalProperties: false
description: Available bandwidth filtering operations
additionalProperties: false
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[cloud_provider], filter[cloud_provider_region],
filter[location.region], filter[location.site], filter[location.pop], filter[location.code]'
schema:
type: object
properties:
cloud_provider:
type: string
enum:
- aws
- azure
- gce
description: The Virtual Private Cloud provider.
example: aws
cloud_provider_region:
type: string
description: The region of specific cloud provider.
example: us-east-1
location.region:
type: string
example: AMER
description: The region of associated location to filter on.
location.site:
type: string
example: SJC
description: The site of associated location to filter on.
location.pop:
type: string
example: SV1
description: The POP of associated location to filter on.
location.code:
type: string
example: silicon_valley-ca
description: The code of associated location to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/VirtualCrossConnectCoverage'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/netapps_GenericErrorResponse'
default:
$ref: '#/components/responses/netapps_GenericErrorResponse'
x-latency-category: responsive
/virtual_cross_connects/{id}:
delete:
summary: Delete a Virtual Cross Connect
description: Deletes the specified virtual cross connect from your account.
operationId: DeleteVirtualCrossConnect
tags:
- Virtual Cross Connects
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VirtualCrossConnectCombined'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Retrieve a Virtual Cross Connect
description: Returns the details of a single virtual cross connect by its identifier.
operationId: GetVirtualCrossConnect
tags:
- Virtual Cross Connects
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VirtualCrossConnectCombined'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update the Virtual Cross Connect
description: Update the Virtual Cross Connect. Cloud IPs can only be patched during the `created` state,
as GCE will only inform you of your generated IP once the pending connection requested has been accepted. Once the
Virtual Cross Connect has moved to `provisioning`, the IPs can no longer be patched. Once the Virtual Cross
Connect has moved to `provisioned` and you are ready to enable routing, you can toggle the routing announcements to
`true`.
operationId: UpdateVirtualCrossConnect
tags:
- Virtual Cross Connects
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VirtualCrossConnectPatch'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VirtualCrossConnectCombined'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/virtual_cross_connects_coverage:
get:
summary: List Virtual Cross Connect Cloud Coverage
description: List Virtual Cross Connects Cloud Coverage. This endpoint shows which cloud regions are available
for the `location_code` your Virtual Cross Connect will be provisioned in.
operationId: ListVirtualCrossConnectCoverage
tags:
- Virtual Cross Connects
parameters:
- name: filters
in: query
style: deepObject
explode: true
description: 'Consolidated filters parameter (deepObject style). Originally: filters[available_bandwidth][contains]'
schema:
type: object
properties:
available_bandwidth:
oneOf:
- type: integer
description: Filter by exact available bandwidth match
- type: object
properties:
contains:
type: integer
description: Filter by available bandwidth containing the specified value
additionalProperties: false
description: Available bandwidth filtering operations
additionalProperties: false
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[cloud_provider], filter[cloud_provider_region],
filter[location.region], filter[location.site], filter[location.pop], filter[location.code]'
schema:
type: object
properties:
cloud_provider:
type: string
enum:
- aws
- azure
- gce
description: The Virtual Private Cloud provider.
example: aws
cloud_provider_region:
type: string
description: The region of specific cloud provider.
example: us-east-1
location.region:
type: string
example: AMER
description: The region of associated location to filter on.
location.site:
type: string
example: SJC
description: The site of associated location to filter on.
location.pop:
type: string
example: SV1
description: The POP of associated location to filter on.
location.code:
type: string
example: silicon_valley-ca
description: The code of associated location to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/netapps_VirtualCrossConnectCoverage'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/voice_clones:
get:
summary: List voice clones
description: Returns a paginated list of voice clones belonging to the authenticated account.
operationId: listVoiceClones
tags:
- Voice Clones
parameters:
- $ref: '#/components/parameters/voice-designs_PageNumber'
- $ref: '#/components/parameters/voice-designs_PageSize'
- $ref: '#/components/parameters/FilterName'
- $ref: '#/components/parameters/FilterProvider'
- $ref: '#/components/parameters/voice-designs_Sort'
responses:
'200':
description: A paginated list of voice clones.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneListResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
post:
summary: Create a voice clone from a voice design
description: Creates a new voice clone by capturing the voice identity of an existing voice design. The clone can then
be used for text-to-speech synthesis.
operationId: createVoiceClone
tags:
- Voice Clones
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneRequest'
responses:
'201':
description: Voice clone created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'422':
description: Unprocessable entity — validation error in the request body.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'502':
description: Bad gateway — upstream voice cloning service is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_clones/from_upload:
post:
summary: Create a voice clone from an audio file upload
description: 'Creates a new voice clone by uploading an audio file directly. Supported formats: WAV, MP3, FLAC, OGG,
M4A. Maximum file size: 20MB. Reference audio is trimmed per model: Qwen3TTS and Bayan use the first 10 seconds, Ultra
uses up to 60 seconds, and Minimax accepts 10 seconds to 5 minutes. Ultra clones return `202` with status `pending`;
all other models return `201` with status `active`. Bayan clones require `ref_text` (the exact transcript of the reference
audio) and support `ar` (default) and `en` only.'
operationId: createVoiceCloneFromUpload
tags:
- Voice Clones
requestBody:
required: true
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/VoiceCloneUploadRequest'
example:
audio_file: string
name: My cloned voice
language: en
gender: male
model_id: Qwen3TTS
provider: telnyx
responses:
'201':
description: Voice clone created successfully from the uploaded audio.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
'202':
description: Voice clone accepted — on-prem import in progress (Ultra model). Poll GET /voice_clones/{id} to check
status.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
'400':
description: Bad request — the audio file is invalid or cannot be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'413':
description: Payload too large — the audio file exceeds the 20MB limit.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'422':
description: 'Unprocessable entity — validation error in the request body. For example, an unsupported `language`
for the model, or a missing `ref_text` with `model_id: Bayan`.'
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
examples:
bayan_missing_ref_text:
summary: Bayan clone without ref_text
value:
errors:
- code: '10027'
title: Unprocessable Entity
detail: 'ref_text is required for model_id Bayan: provide the exact transcript of the reference audio'
source:
pointer: /ref_text
'502':
description: Bad gateway — upstream voice cloning service is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_clones/{id}:
delete:
summary: Delete a voice clone
description: Permanently deletes a voice clone. This action cannot be undone.
operationId: deleteVoiceClone
tags:
- Voice Clones
parameters:
- name: id
in: path
required: true
description: The voice clone UUID.
schema:
type: string
format: uuid
responses:
'204':
description: Voice clone deleted successfully.
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice clone not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
patch:
summary: Update a voice clone
description: Updates the name, language, or gender of a voice clone.
operationId: updateVoiceClone
tags:
- Voice Clones
parameters:
- name: id
in: path
required: true
description: The voice clone UUID.
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneUpdateRequest'
responses:
'200':
description: Voice clone updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceCloneResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice clone not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'422':
description: Unprocessable entity — validation error in the request body.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_clones/{id}/sample:
get:
summary: Download voice clone audio sample
description: Downloads the WAV audio sample that was used to create the voice clone.
operationId: getVoiceCloneSample
tags:
- Voice Clones
parameters:
- name: id
in: path
required: true
description: The voice clone UUID.
schema:
type: string
format: uuid
responses:
'200':
description: WAV audio sample binary.
content:
audio/wav:
schema:
type: string
format: binary
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice clone not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_designs:
get:
summary: List voice designs
description: Returns a paginated list of voice designs belonging to the authenticated account.
operationId: listVoiceDesigns
tags:
- Voice Designs
parameters:
- $ref: '#/components/parameters/voice-designs_PageNumber'
- $ref: '#/components/parameters/voice-designs_PageSize'
- $ref: '#/components/parameters/FilterName'
- $ref: '#/components/parameters/voice-designs_Sort'
responses:
'200':
description: A paginated list of voice designs.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceDesignListResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
post:
summary: Create or add a version to a voice design
description: Creates a new voice design (version 1) when `voice_design_id` is omitted. When `voice_design_id` is provided,
adds a new version to the existing design instead. A design can have at most 50 versions.
operationId: createVoiceDesign
tags:
- Voice Designs
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceDesignRequest'
responses:
'201':
description: Voice design created or new version added successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceDesignResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design not found — the specified `voice_design_id` does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'409':
description: Conflict — the voice design has reached the maximum of 50 versions.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'422':
description: Unprocessable entity — validation error in the request body.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'502':
description: Bad gateway — upstream voice synthesis service is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_designs/{id}:
delete:
summary: Delete a voice design
description: Permanently deletes a voice design and all of its versions. This action cannot be undone.
operationId: deleteVoiceDesign
tags:
- Voice Designs
parameters:
- name: id
in: path
required: true
description: The voice design UUID or name.
schema:
type: string
responses:
'204':
description: Voice design deleted successfully.
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
get:
summary: Get a voice design
description: Returns the latest version of a voice design, or a specific version when `?version=N` is provided. The
`id` parameter accepts either a UUID or the design name.
operationId: getVoiceDesign
tags:
- Voice Designs
parameters:
- name: id
in: path
required: true
description: The voice design UUID or name.
schema:
type: string
- name: version
in: query
required: false
description: Specific version number to retrieve. Defaults to the latest version.
schema:
type: integer
minimum: 1
responses:
'200':
description: The requested voice design.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceDesignResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
patch:
summary: Rename a voice design
description: Updates the name of a voice design. All versions retain their other properties.
operationId: updateVoiceDesign
tags:
- Voice Designs
parameters:
- name: id
in: path
required: true
description: The voice design UUID or name.
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceDesignUpdateRequest'
responses:
'200':
description: Voice design renamed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceDesignUpdatedResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'422':
description: Unprocessable entity — validation error in the request body.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_designs/{id}/sample:
get:
summary: Download voice design audio sample
description: Downloads the WAV audio sample for the voice design. Returns the latest version's sample by default, or
a specific version when `?version=N` is provided. The `id` parameter accepts either a UUID or the design name.
operationId: getVoiceDesignSample
tags:
- Voice Designs
parameters:
- name: id
in: path
required: true
description: The voice design UUID or name.
schema:
type: string
- name: version
in: query
required: false
description: Specific version number to download the sample for. Defaults to the latest version.
schema:
type: integer
minimum: 1
responses:
'200':
description: WAV audio sample binary.
content:
audio/wav:
schema:
type: string
format: binary
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design or version not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_designs/{id}/versions/{version}:
delete:
summary: Delete a specific version of a voice design
description: Permanently deletes a specific version of a voice design. The version number must be a positive integer.
operationId: deleteVoiceDesignVersion
tags:
- Voice Designs
parameters:
- name: id
in: path
required: true
description: The voice design UUID or name.
schema:
type: string
- name: version
in: path
required: true
description: The version number to delete.
schema:
type: integer
minimum: 1
responses:
'204':
description: Voice design version deleted successfully.
'400':
description: Bad request — invalid version number.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'401':
description: Unauthorized — missing or invalid bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
'404':
description: Voice design or version not found.
content:
application/json:
schema:
$ref: '#/components/schemas/voice-designs_ErrorResponse'
/voice_sdk_call_reports:
get:
tags:
- Voice SDK Stats
summary: List Voice SDK call reports
description: Returns paginated raw call report stats JSON payloads stored for the authenticated user. The user is derived
from Telnyx authentication, not from request parameters.
operationId: ListVoiceSdkCallReports
parameters:
- $ref: '#/components/parameters/voice-sdk-debug_PageConsolidated'
- $ref: '#/components/parameters/VoiceSdkCallReportSort'
responses:
'200':
description: Paginated raw call report stats payloads.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportListResponse'
examples:
reports:
summary: Call report list
value:
data:
- call_id: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1
voice_sdk_id: VSDK1Cu-AUDpaCkbs5LKcSUK9jLZFcgqLdg
voice_sdk_session_id: 0a52a677-9784-4841-ad31-9596c6e5b970
voice_sdk_id_decoded:
region: us-central-1
user_agent: TelnyxRTC/2.24.0 (iOS 17.5)
version: 2.24.0
telnyx_session_id: 9a0f6b0e-fb1f-44c9-9b53-7f81442b4c5f
telnyx_leg_id: 2d0dd8f1-7d90-4f1f-b8e8-67f9fbdfe2bd
stored_at: '2026-05-06T20:00:05Z'
summary:
callId: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1
stats:
- intervalStartUtc: '2026-05-06T20:00:00Z'
intervalEndUtc: '2026-05-06T20:00:05Z'
audio:
inbound:
packetsReceived: 1840
packetsLost: 0
jitterAvg: 0.003
outbound:
packetsSent: 1837
bytesSent: 293920
connection:
roundTripTimeAvg: 0.041
bytesSent: 293920
bytesReceived: 312880
ice:
state: succeeded
nominated: true
local:
candidateType: host
protocol: udp
remote:
candidateType: srflx
protocol: udp
transport:
iceState: connected
dtlsState: connected
srtpCipher: AES_CM_128_HMAC_SHA1_80
logs:
- timestamp: '2026-05-06T20:00:00Z'
level: debug
message: rtcpeer candidate selected
context:
candidateType: host
protocol: udp
flushReason:
type: call-end
segment: 0
user_id: 3307ca65-df56-4f15-8ba7-589d584d215b
organization_id: 06a3dfbd-4988-4fb1-8d28-9b5d85ca624b
meta:
total_pages: 1
total_results: 1
page_number: 1
page_size: 20
'400':
description: Bad request — invalid pagination or sort parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
'401':
description: Authentication failed.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
'500':
description: Unexpected server error while listing reports.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
/voice_sdk_call_reports/{call_id}:
get:
tags:
- Voice SDK Stats
summary: Retrieve Voice SDK call reports by call ID
description: Returns raw call report stats JSON payloads stored for the authenticated user and `call_id`. The user is
derived from Telnyx authentication, not from request parameters.
operationId: GetVoiceSdkCallReport
parameters:
- $ref: '#/components/parameters/CallId'
responses:
'200':
description: Raw call report stats payloads.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportsResponse'
examples:
reports:
summary: Call reports
value:
- call_id: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1
voice_sdk_id: VSDK1Cu-AUDpaCkbs5LKcSUK9jLZFcgqLdg
voice_sdk_session_id: 0a52a677-9784-4841-ad31-9596c6e5b970
voice_sdk_id_decoded:
region: us-central-1
user_agent: TelnyxRTC/2.24.0 (iOS 17.5)
version: 2.24.0
telnyx_session_id: 9a0f6b0e-fb1f-44c9-9b53-7f81442b4c5f
telnyx_leg_id: 2d0dd8f1-7d90-4f1f-b8e8-67f9fbdfe2bd
stored_at: '2026-05-06T20:00:05Z'
summary:
callId: 6d6fb6f1-2b82-4d75-9eb5-3c8e995f1ed1
stats:
- intervalStartUtc: '2026-05-06T20:00:00Z'
intervalEndUtc: '2026-05-06T20:00:05Z'
audio:
inbound:
packetsReceived: 1840
packetsLost: 0
jitterAvg: 0.003
outbound:
packetsSent: 1837
bytesSent: 293920
connection:
roundTripTimeAvg: 0.041
bytesSent: 293920
bytesReceived: 312880
ice:
state: succeeded
nominated: true
local:
candidateType: host
protocol: udp
remote:
candidateType: srflx
protocol: udp
transport:
iceState: connected
dtlsState: connected
srtpCipher: AES_CM_128_HMAC_SHA1_80
logs:
- timestamp: '2026-05-06T20:00:00Z'
level: debug
message: rtcpeer candidate selected
context:
candidateType: host
protocol: udp
flushReason:
type: call-end
segment: 0
user_id: 3307ca65-df56-4f15-8ba7-589d584d215b
organization_id: 06a3dfbd-4988-4fb1-8d28-9b5d85ca624b
'400':
description: Bad request — invalid path parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
'401':
description: Authentication failed.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
'404':
description: No call report was found for the authenticated user and call ID.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
'500':
description: Unexpected server error while looking up the report.
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceSdkCallReportV2ErrorResponse'
/web_search:
post:
summary: Web search
description: 'Performs a real-time web search and returns structured, LLM-ready JSON results with titles, URLs, descriptions,
and snippets. Supports filtering by domain, country, safe search, freshness, and live crawl.
**Note:** `include_domains` and `exclude_domains` cannot be used in the same request. Use one or the other.'
operationId: CreateWebSearch
tags:
- Web Search
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebSearchRequest'
example:
query: latest AI agent frameworks
count: 10
country: US
safesearch: moderate
freshness: week
include_domains:
- arxiv.org
- github.com
livecrawl: false
responses:
'200':
description: Successful search response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WebSearchResponse'
example:
data:
results:
web:
- url: https://example.com/article
title: Top AI Agent Frameworks in 2026
description: A comprehensive guide to the latest AI agent frameworks...
snippets:
- LangGraph is a framework for building stateful, multi-actor agents...
thumbnail_url: https://example.com/thumb.jpg
favicon_url: https://cdn.telnyx.com/favicon?domain=example.com&size=128
news: []
'400':
$ref: '#/components/responses/web-search_BadRequest'
'401':
$ref: '#/components/responses/web-search_Unauthorized'
'502':
$ref: '#/components/responses/web-search_ProviderError'
'504':
$ref: '#/components/responses/ProviderTimeout'
'500':
$ref: '#/components/responses/web-search_InternalServerError'
/web_search/contents:
post:
summary: Retrieve page contents
description: 'Retrieves clean HTML or Markdown content from a list of URLs. Supports up to 20 URLs per request (public
API limit). Specify which formats to return: `html`, `markdown`, `metadata`.'
operationId: CreateWebSearchContents
tags:
- Contents
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ContentsRequest'
example:
urls:
- https://en.wikipedia.org/wiki/Artificial_intelligence
formats:
- markdown
- metadata
crawl_timeout: 10
max_age: null
responses:
'200':
description: Successful content retrieval response.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ContentsResponse'
example:
data:
results:
- url: https://en.wikipedia.org/wiki/Artificial_intelligence
title: Artificial intelligence - Wikipedia
markdown: '# Artificial intelligence
Artificial intelligence (AI) is...'
metadata:
site_name: Wikipedia
favicon_url: https://cdn.telnyx.com/favicon?domain=en.wikipedia.org&size=128
'400':
$ref: '#/components/responses/web-search_BadRequest'
'401':
$ref: '#/components/responses/web-search_Unauthorized'
'502':
$ref: '#/components/responses/web-search_ProviderError'
'504':
$ref: '#/components/responses/ProviderTimeout'
'500':
$ref: '#/components/responses/web-search_InternalServerError'
/web_search/research:
post:
summary: Start research task
description: 'Starts a deep research task that runs multiple searches, reads sources, and synthesizes an answer with
citations.
## Synchronous mode (default)
When `background` is `false` or omitted, the request blocks until the research completes and returns the answer with
citations. This can take up to 120 seconds depending on `research_effort`.
## Asynchronous mode
When `background` is `true`, the request returns immediately with a `task_id` and `status: pending`. Poll `GET /web_search/research/{task_id}`
to check when the research completes and retrieve the answer.'
operationId: CreateWebSearchResearch
tags:
- Research
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ResearchRequest'
example:
query: Compare the performance of RAG vs fine-tuning for domain-specific QA
research_effort: standard
max_sources: 20
background: false
responses:
'200':
description: 'Research response. Shape depends on `background`:
- **Synchronous** (`background` false/unset): returns `answer` + `citations`.
- **Asynchronous** (`background` true): returns `task_id` + `status`.'
content:
application/json:
schema:
type: object
properties:
data:
oneOf:
- $ref: '#/components/schemas/ResearchResponseSync'
- $ref: '#/components/schemas/ResearchResponseAsync'
examples:
sync:
summary: Synchronous response (background=false)
value:
data:
answer: RAG and fine-tuning serve different purposes...
citations:
- url: https://arxiv.org/abs/2401.15884
title: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
snippet: We show that RAG models produce more factually grounded responses...
async:
summary: Asynchronous response (background=true)
value:
data:
task_id: bf3026a5-dd57-44dd-b922-200041be3a4b
status: pending
'400':
$ref: '#/components/responses/web-search_BadRequest'
'401':
$ref: '#/components/responses/web-search_Unauthorized'
'502':
$ref: '#/components/responses/web-search_ProviderError'
'504':
$ref: '#/components/responses/ProviderTimeout'
'500':
$ref: '#/components/responses/web-search_InternalServerError'
/web_search/research/{task_id}:
get:
summary: Get research task status
description: Polls the status of a previously started asynchronous research task. When the status is `completed`, the
response includes the answer and citations. When the status is `failed`, the response includes an error message.
operationId: GetWebSearchResearchStatus
tags:
- Research
parameters:
- name: task_id
in: path
required: true
description: 'The research task ID returned by `POST /web_search/research` with `background: true`.'
schema:
type: string
maxLength: 200
example: bf3026a5-dd57-44dd-b922-200041be3a4b
responses:
'200':
description: Research task status.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/ResearchTaskStatus'
examples:
completed:
summary: Task completed
value:
data:
task_id: bf3026a5-dd57-44dd-b922-200041be3a4b
status: completed
answer: RAG and fine-tuning serve different purposes...
citations:
- url: https://arxiv.org/abs/2401.15884
title: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
running:
summary: Task still running
value:
data:
task_id: bf3026a5-dd57-44dd-b922-200041be3a4b
status: running
failed:
summary: Task failed
value:
data:
task_id: bf3026a5-dd57-44dd-b922-200041be3a4b
status: failed
error: Provider request failed
'401':
$ref: '#/components/responses/web-search_Unauthorized'
'404':
$ref: '#/components/responses/web-search_NotFound'
'502':
$ref: '#/components/responses/web-search_ProviderError'
'500':
$ref: '#/components/responses/web-search_InternalServerError'
/webhook_deliveries:
get:
description: Lists webhook_deliveries for the authenticated user
summary: List webhook deliveries
operationId: GetWebhookDeliveries
tags:
- Webhooks
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[status][eq], filter[event_type],
filter[webhook][contains], filter[attempts][contains], filter[started_at][gte], filter[started_at][lte], filter[finished_at][gte],
filter[finished_at][lte]'
schema:
type: object
properties:
status:
type: object
properties:
eq:
type: string
enum:
- delivered
- failed
example: delivered
description: Return only webhook_deliveries matching the given `status`
event_type:
type: string
example: call_initiated,call.initiated
description: Return only webhook_deliveries matching the given value of `event_type`. Accepts multiple values
separated by a `,`.
webhook:
type: object
properties:
contains:
type: string
example: call.initiated
description: Return only webhook deliveries whose `webhook` component contains the given text
attempts:
type: object
properties:
contains:
type: string
example: https://fallback.example.com/webhooks
description: Return only webhook_deliveries whose `attempts` component contains the given text
started_at:
type: object
properties:
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: Return only webhook_deliveries whose delivery started later than or at given ISO 8601 datetime
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: Return only webhook_deliveries whose delivery started earlier than or at given ISO 8601 datetime
finished_at:
type: object
properties:
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: Return only webhook_deliveries whose delivery finished later than or at given ISO 8601 datetime
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: Return only webhook_deliveries whose delivery finished earlier than or at given ISO 8601 datetime
responses:
'200':
description: A paginated array of webhook_delivery attempts
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/webhook_delivery'
meta:
$ref: '#/components/schemas/PaginationMetaSimple'
'401':
description: Unauthorized
'422':
description: Unprocessable entity
/webhook_deliveries/{id}:
get:
summary: Find webhook_delivery details by ID
description: Provides webhook_delivery debug data, such as timestamps, delivery status and attempts.
operationId: GetWebhookDelivery
tags:
- Webhooks
parameters:
- name: id
in: path
required: true
description: Uniquely identifies the webhook_delivery.
schema:
type: string
format: uuid
example: C9C0797E-901D-4349-A33C-C2C8F31A92C2
responses:
'200':
description: Webhook delivery record.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/webhook_delivery'
'401':
description: Unauthorized
'404':
description: WebhookDelivery not found
/whatsapp/business_accounts:
get:
tags:
- Whatsapp Business Accounts
summary: List Whatsapp Business Accounts
operationId: ListWabas
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: List of Whatsapp Business Accounts
$ref: '#/components/responses/WabasListResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve a list of the WhatsApp Business Accounts (WABAs) connected to your Telnyx account.
/whatsapp/business_accounts/{id}:
delete:
tags:
- Whatsapp Business Accounts
summary: Delete a Whatsapp Business Account
operationId: deleteWaba
parameters:
- $ref: '#/components/parameters/WabaId'
responses:
'204':
description: Deleted
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Delete a WhatsApp Business Account connection from your Telnyx account.
get:
tags:
- Whatsapp Business Accounts
summary: Get a single Whatsapp Business Account
operationId: GetSingleWaba
parameters:
- $ref: '#/components/parameters/WabaId'
responses:
'200':
description: Whatsapp Business Account details
$ref: '#/components/responses/WabaSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the details of a specific WhatsApp Business Account.
/whatsapp/business_accounts/{id}/phone_numbers:
get:
tags:
- Whatsapp Business Accounts
summary: List phone numbers for a WABA
operationId: ListWabaPhones
parameters:
- $ref: '#/components/parameters/WabaId'
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: List of phone numbers
$ref: '#/components/responses/WhatsappPhonesListResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: List the phone numbers associated with a WhatsApp Business Account.
post:
tags:
- Whatsapp Phone Numbers
summary: Initialize Whatsapp phone number verification
operationId: InitializeWhatsappVerification
parameters:
- $ref: '#/components/parameters/WabaId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappPhoneNumberVerificationRequest'
example:
phone_number: string
display_name: string
verification_method: sms
language: en_US
responses:
'204':
description: Verification initiated
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Start the verification process to register a phone number with a WhatsApp Business Account.
/whatsapp/business_accounts/{id}/settings:
get:
tags:
- Whatsapp Business Accounts
summary: Get WABA settings
operationId: GetWabaSettings
parameters:
- $ref: '#/components/parameters/WabaId'
responses:
'200':
description: WABA settings
$ref: '#/components/responses/WabaSettingsResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the settings of a WhatsApp Business Account.
patch:
tags:
- Whatsapp Business Accounts
summary: Update WABA settings
operationId: PatchWabaSettings
parameters:
- $ref: '#/components/parameters/WabaId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchWabaSettingsRequest'
responses:
'200':
description: Updated settings
$ref: '#/components/responses/WabaSettingsResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Update the settings of a WhatsApp Business Account.
/whatsapp/hosted_signups:
get:
tags:
- Whatsapp Signup
summary: List Whatsapp hosted signups
operationId: ListWhatsappHostedSignups
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Whatsapp hosted signups list
$ref: '#/components/responses/WhatsappHostedSignupListResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: List hosted signups created by the account, newest first. Expired hosted signups are included.
post:
tags:
- Whatsapp Signup
summary: Create a Whatsapp hosted signup
operationId: CreateWhatsappHostedSignup
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappHostedSignupCreateRequest'
example:
app_id: '123456789012345'
signup_type: coexistence
responses:
'200':
description: Hosted signup created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappHostedSignup'
example:
data:
id: 0192345a-7b8c-7d9e-0f12-3456789abcde
record_type: whatsapp_jwt
app_id: '123456789012345'
created_at: '2026-07-08T12:00:00Z'
expires_at: '2026-07-09T12:00:00Z'
jwt: eyJhbGciOiJSUzI1NiIs...
url: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs...
solution_id: '987654321098765'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10015'
title: Bad request
detail: expires_at must be at most 3 days in the future
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Create a time-limited onboarding URL on the Telnyx-hosted Embedded Signup page for a Tech Provider's end
customer. Set `signup_type` to `coexistence` to launch Meta's WhatsApp Business app coexistence flow instead of standard
Cloud API onboarding.
/whatsapp/hosted_signups/{id}:
get:
tags:
- Whatsapp Signup
summary: Get a Whatsapp hosted signup
operationId: GetWhatsappHostedSignup
parameters:
- $ref: '#/components/parameters/WhatsappHostedSignupId'
responses:
'200':
description: Whatsapp hosted signup
$ref: '#/components/responses/WhatsappHostedSignupResponse'
'404':
description: Hosted signup not found
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve a hosted signup and its onboarding URL.
/whatsapp/message_templates:
get:
tags:
- Whatsapp Message Templates
summary: List Whatsapp message templates
operationId: ListWhatsappTemplates
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter[waba_id]
in: query
schema:
type: string
description: Filter by WABA ID
- name: filter[category]
in: query
schema:
type: string
enum:
- MARKETING
- UTILITY
- AUTHENTICATION
description: Filter by category
- name: filter[status]
in: query
schema:
type: string
description: Filter by template status
- name: filter[search]
in: query
schema:
type: string
description: Search templates by name
responses:
'200':
description: Whatsapp templates list
$ref: '#/components/responses/WhatsappTemplateListResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the WhatsApp message templates for your WhatsApp Business Accounts.
post:
tags:
- Whatsapp Message Templates
summary: Create a Whatsapp message template
operationId: PostWhatsappTemplate
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappCreateTemplateRequest'
responses:
'201':
description: Template created
$ref: '#/components/responses/WhatsappTemplateSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Create a new WhatsApp message template. Templates must be approved by WhatsApp before they can be used
in messages.
/whatsapp/message_templates/{id}:
delete:
tags:
- Whatsapp Message Templates
summary: Delete a Whatsapp message template
operationId: DeleteWhatsappTemplate
parameters:
- $ref: '#/components/parameters/WhatsappTemplateId'
responses:
'204':
description: Deleted
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Permanently deletes the specified WhatsApp message template from your account.
get:
tags:
- Whatsapp Message Templates
summary: Get a Whatsapp message template by ID
operationId: GetWhatsappTemplate
parameters:
- $ref: '#/components/parameters/WhatsappTemplateId'
responses:
'200':
description: Template details
$ref: '#/components/responses/WhatsappTemplateSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve a specific WhatsApp message template by its ID.
patch:
tags:
- Whatsapp Message Templates
summary: Update a Whatsapp message template
operationId: PatchWhatsappTemplate
parameters:
- $ref: '#/components/parameters/WhatsappTemplateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappUpdateTemplateRequest'
responses:
'200':
description: Updated template
$ref: '#/components/responses/WhatsappTemplateSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Update an existing WhatsApp message template.
/whatsapp/phone_numbers:
get:
tags:
- Whatsapp Phone Numbers
summary: List Whatsapp phone numbers
operationId: ListPhoneNumbers
parameters:
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Phone numbers
$ref: '#/components/responses/WhatsappPhonesListResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve a list of the phone numbers registered for WhatsApp on your account.
/whatsapp/phone_numbers/{id}/calling_routing:
get:
tags:
- Whatsapp Phone Numbers
summary: Get Connection ID for a WhatsApp Calling BYON number
operationId: getWhatsappCallingRouting
parameters:
- $ref: '#/components/parameters/WhatsappCallingRoutingNumber'
responses:
'200':
description: The stored routing connection. `connection_id` is `null` when no connection is routed, and also when
the stored target is not a connection in the account, including a connection too new to have propagated yet.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappCallingRoutingData'
required:
- data
examples:
routed:
summary: Number routed to a connection
value:
data:
record_type: whatsapp_calling_routing
phone_number: '+13125550100'
connection_id: '1234567890'
not_routed:
summary: No routing connection
value:
data:
record_type: whatsapp_calling_routing
phone_number: '+13125550100'
connection_id: null
'403':
description: The caller is not permitted to perform this action. Sub-users need read permission on connections.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'404':
description: The account has no WhatsApp Calling number with this phone number, or the requesting account could
not be found. A number just enabled for WhatsApp Calling returns 404 until it is provisioned, so retry.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10003'
title: Resource not found
detail: The requested resource or URL could not be found.
'422':
description: The phone number is not valid. Errors are keyed by field.
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappCallingRoutingFieldErrors'
examples:
invalid_phone_number:
summary: Phone number is not valid E.164
value:
errors:
phone_number:
- is not a valid E.164 phone number
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: 'Retrieve the connection ID currently stored for a WhatsApp Calling BYON (Bring Your Own Number) phone
number: the connection that inbound WhatsApp calls to the number are delivered to.
Use it to check the result of `PATCH /whatsapp/phone_numbers/{id}/calling_routing`. A read made immediately after
an update can still return the previous value.
Sub-users need read permission on connections.'
patch:
tags:
- Whatsapp Phone Numbers
summary: Update Connection ID for a WhatsApp Calling BYON number
operationId: updateWhatsappCallingRouting
parameters:
- $ref: '#/components/parameters/WhatsappCallingRoutingNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappPatchCallingRoutingRequest'
examples:
set:
summary: Route the number to a connection
value:
connection_id: '1234567890'
clear:
summary: Clear the routing
value:
connection_id: null
responses:
'202':
description: Update accepted for processing. The body echoes the requested routing; it does not confirm that the
routing was applied.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappCallingRoutingData'
required:
- data
examples:
set:
summary: Routing update accepted
value:
data:
record_type: whatsapp_calling_routing
phone_number: '+13125550100'
connection_id: '1234567890'
clear:
summary: Routing clear accepted
value:
data:
record_type: whatsapp_calling_routing
phone_number: '+13125550100'
connection_id: null
'403':
description: The caller is not permitted to perform this action. Sub-users need update permission on connections.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'404':
description: The account has no WhatsApp Calling number with this phone number, or the requesting account could
not be found. A number just enabled for WhatsApp Calling returns 404 until it is provisioned, so retry.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10003'
title: Resource not found
detail: The requested resource or URL could not be found.
'422':
description: 'Validation failed. Errors are keyed by field: `phone_number` when the number is not valid E.164 or
is active on Telnyx, and `connection_id` when it is missing, is not a positive integer ID, is not a connection
in the account, or is a WhatsApp connection.'
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappCallingRoutingFieldErrors'
examples:
invalid_phone_number:
summary: Phone number is not valid E.164
value:
errors:
phone_number:
- is not a valid E.164 phone number
telnyx_number:
summary: Phone number is active on Telnyx
value:
errors:
phone_number:
- is a Telnyx number and routes via its own assignment
missing_connection_id:
summary: connection_id omitted from the body
value:
errors:
connection_id:
- is required
invalid_connection_id:
summary: connection_id is malformed or not a connection in the account
value:
errors:
connection_id:
- is invalid
whatsapp_connection:
summary: connection_id is a WhatsApp connection
value:
errors:
connection_id:
- cannot be a WhatsApp connection
'503':
description: The update could not be confirmed as queued for processing, so it may or may not be applied. The request
can be retried.
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappCallingRoutingFieldErrors'
example:
errors:
event:
- could not be published
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: 'Set or clear the connection ID for a WhatsApp Calling BYON (Bring Your Own Number) phone number: the connection
that inbound WhatsApp calls to the number are delivered to.
The update is processed asynchronously. A `202` response means the request was accepted, not that the routing changed.
Check the result with `GET /whatsapp/phone_numbers/{id}/calling_routing`, which can return the previous value immediately
after an update. An update for a number that is not a WhatsApp Calling number in the account returns 404.
The connection must belong to the same account and must not be a WhatsApp connection. Send `connection_id: null` to
clear the routing; omitting `connection_id` is rejected. Numbers active on Telnyx are rejected, because they route
through their own connection assignment.
Sub-users need update permission on connections, and read permission to check the result with `GET`.'
/whatsapp/phone_numbers/{phone_number}:
delete:
tags:
- Whatsapp Phone Numbers
summary: Delete a Whatsapp phone number
operationId: DeleteWhatsappPhoneNumber
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'204':
description: Phone number was successfully deleted
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Delete a phone number's WhatsApp registration from your account.
get:
tags:
- Whatsapp Phone Numbers
summary: Retrieve a WhatsApp phone number
operationId: GetWhatsappPhoneNumber
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
$ref: '#/components/responses/WhatsappPhoneSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Returns one WhatsApp phone number linked to the authenticated Telnyx account. For a coexistence number
in the `syncing` state, the response includes `sync_progress`.
/whatsapp/phone_numbers/{phone_number}/calling_settings:
get:
tags:
- Whatsapp Phone Numbers
summary: Get calling settings for a phone number
operationId: GetWhatsappCallingSettings
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Calling settings
$ref: '#/components/responses/WhatsappCallingSettingsResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the WhatsApp calling settings for a phone number.
patch:
tags:
- Whatsapp Phone Numbers
summary: Enable or disable Whatsapp calling for a phone number
operationId: PatchWhatsappCallingSettings
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappPatchCallingSettingsRequest'
example:
enabled: false
responses:
'200':
description: Updated calling settings
$ref: '#/components/responses/WhatsappCallingSettingsResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Enable or disable WhatsApp calling for a phone number and manage its calling configuration.
/whatsapp/phone_numbers/{phone_number}/conversation_window:
get:
tags:
- Whatsapp Phone Numbers
summary: Get conversation window status for a phone number
description: Returns whether the 24-hour conversation window is currently open for a given source/destination pair.
If window_active is false, only template messages may be sent.
operationId: GetWhatsappConversationWindow
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
- name: destination_number
in: query
required: true
schema:
type: string
example: '+353894650851'
description: Destination phone number in E.164 format
responses:
'200':
$ref: '#/components/responses/WhatsappConversationWindowResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
/whatsapp/phone_numbers/{phone_number}/conversational_components:
get:
tags:
- Whatsapp Phone Numbers
summary: Get phone number conversational components
operationId: GetWhatsappConversationalComponents
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Conversational Components
$ref: '#/components/responses/WhatsappConversationalComponentSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the conversational components configuration for a WhatsApp phone number.
patch:
tags:
- Whatsapp Phone Numbers
summary: Update phone number conversational components
operationId: PatchWhatsappConversationalComponents
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappUpdateConversationalComponentRequest'
example:
commands:
- command: string
description: string
ice_breakers:
- string
responses:
'200':
description: Updated profile
$ref: '#/components/responses/WhatsappConversationalComponentSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Update the conversational components configuration, such as welcome messages and commands, for a WhatsApp
phone number.
/whatsapp/phone_numbers/{phone_number}/profile:
get:
tags:
- Whatsapp Phone Numbers
summary: Get phone number business profile
operationId: GetWhatsappProfile
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Profile
$ref: '#/components/responses/WhatsappProfileSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the WhatsApp business profile associated with a phone number.
patch:
tags:
- Whatsapp Phone Numbers
summary: Update phone number business profile
operationId: PatchWhatsappProfile
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappUpdateProfileRequest'
example:
display_name: string
about: string
description: string
category: string
email: string
website: string
address: string
profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
responses:
'200':
description: Updated profile
$ref: '#/components/responses/WhatsappProfileSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Update the WhatsApp business profile associated with a phone number.
/whatsapp/phone_numbers/{phone_number}/profile/photo:
delete:
tags:
- Whatsapp Phone Numbers
summary: Delete Whatsapp profile photo
operationId: DeleteWhatsappProfilePhoto
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'204':
description: Photo deleted
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Delete the profile photo of a WhatsApp phone number.
get:
tags:
- Whatsapp Phone Numbers
summary: Get Whatsapp profile photo
operationId: GetWhatsappProfilePhoto
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
responses:
'200':
description: Profile photo
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappProfilePhotoResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the profile photo of a WhatsApp phone number.
post:
tags:
- Whatsapp Phone Numbers
summary: Upload Whatsapp profile photo
operationId: PostWhatsappProfilePhoto
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: Image file (JPEG recommended, max 10 MB)
example:
file: string
responses:
'200':
description: Profile with updated photo
$ref: '#/components/responses/WhatsappProfileSingleResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Upload a new profile photo for a WhatsApp phone number.
/whatsapp/phone_numbers/{phone_number}/resend_verification:
post:
tags:
- Whatsapp Phone Numbers
summary: Resend verification code
operationId: ResendWhatsappVerification
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappResendVerificationRequest'
example:
verification_method: sms
responses:
'204':
description: Code resent
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Resend the verification code for a phone number that is being registered with WhatsApp.
/whatsapp/phone_numbers/{phone_number}/verify:
post:
tags:
- Whatsapp Phone Numbers
summary: Submit verification code for a phone number
operationId: VerifyWhatsappPhoneNumber
parameters:
- $ref: '#/components/parameters/WhatsappPhoneNumber'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappVerifyCodeRequest'
example:
code: string
responses:
'204':
description: Verified successfully
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Submit the verification code to complete WhatsApp registration of a phone number.
/whatsapp/signup:
get:
tags:
- Whatsapp Signup
summary: List Whatsapp signup sessions
operationId: ListWhatsappSignupSessions
parameters:
- $ref: '#/components/parameters/PageConsolidated'
- name: filter[waba_id]
in: query
schema:
type: string
description: Filter by Meta WABA ID
- name: filter[customer_id]
in: query
schema:
type: string
description: Filter by the tech provider customer reference
- name: filter[created_at][gte]
in: query
schema:
type: string
format: date-time
description: Return sessions created at or after this time (RFC 3339)
- name: filter[created_at][lte]
in: query
schema:
type: string
format: date-time
description: Return sessions created at or before this time (RFC 3339)
responses:
'200':
description: Whatsapp signup sessions list
$ref: '#/components/responses/WhatsappSignupSessionListResponse'
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: List finished WhatsApp Embedded Signup sessions, with status `SUCCESS` or `FAILURE`, newest first. Use
the `errors` of a failed session to see why provisioning stopped.
/whatsapp/signup/{id}/status:
get:
tags:
- Whatsapp Signup
summary: Get Whatsapp signup session status
operationId: GetWhatsappSignupSessionStatus
parameters:
- $ref: '#/components/parameters/WhatsappSignupSessionId'
responses:
'200':
description: Whatsapp signup session
$ref: '#/components/responses/WhatsappSignupSessionResponse'
'404':
description: Signup session not found
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found
4XX:
$ref: '#/components/responses/management_messaging_GenericErrorResponse'
x-latency-category: responsive
description: Retrieve the current state and status of a WhatsApp Embedded Signup session.
/wireguard_interfaces:
get:
summary: List all WireGuard Interfaces
description: Returns a paginated list of the WireGuard interfaces on your account, with support for filtering.
operationId: ListWireguardInterfaces
tags:
- WireGuard Interfaces
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[network_id]'
schema:
type: object
properties:
network_id:
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
description: The associated network id to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WireguardInterfaceRead'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a WireGuard Interface
description: Create a new WireGuard Interface. Current limitation of 10 interfaces per user can be created.
operationId: CreateWireguardInterface
tags:
- WireGuard Interfaces
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WireguardInterfaceCreate'
required: true
responses:
'202':
description: Creation request accepted. Provisioning is asynchronous; poll GET /wireguard_interfaces/{id} with the
returned id to check status.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardInterfaceRead'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/wireguard_interfaces/{id}:
delete:
summary: Delete a WireGuard Interface
description: Deletes the specified WireGuard interface from its network.
operationId: DeleteWireguardInterface
tags:
- WireGuard Interfaces
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardInterfaceRead'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Retrieve a WireGuard Interfaces
description: Returns the details of a single WireGuard interface by its identifier.
operationId: GetWireguardInterface
tags:
- WireGuard Interfaces
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardInterfaceRead'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/wireguard_peers:
get:
summary: List all WireGuard Peers
description: Returns a paginated list of your WireGuard peers, with support for filtering.
operationId: ListWireguardPeers
tags:
- WireGuard Interfaces
parameters:
- name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[wireguard_interface_id]'
schema:
type: object
properties:
wireguard_interface_id:
type: string
format: uuid
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
description: The id of the associated WireGuard interface to filter on.
- $ref: '#/components/parameters/PageConsolidated'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WireguardPeer'
meta:
$ref: '#/components/schemas/PaginationMeta'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
post:
summary: Create a WireGuard Peer
description: Create a new WireGuard Peer. Current limitation of 5 peers per interface can be created.
operationId: CreateWireguardPeer
tags:
- WireGuard Interfaces
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WireguardPeerCreate'
required: true
responses:
'202':
description: Creation request accepted. Provisioning is asynchronous; poll GET /wireguard_peers/{id} with the returned
id to check status.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardPeer'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/wireguard_peers/{id}:
delete:
summary: Delete the WireGuard Peer
description: Deletes the specified WireGuard peer from its interface.
operationId: DeleteWireguardPeer
tags:
- WireGuard Interfaces
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardPeer'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
get:
summary: Retrieve the WireGuard Peer
description: Returns the details of a single WireGuard peer by its identifier.
operationId: GetWireguardPeer
tags:
- WireGuard Interfaces
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardPeer'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
patch:
summary: Update the WireGuard Peer
description: Updates the specified WireGuard peer and returns the updated peer.
operationId: UpdateWireguardPeer
tags:
- WireGuard Interfaces
parameters:
- $ref: '#/components/parameters/ResourceId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WireguardPeerPatch'
required: true
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WireguardPeer'
'422':
$ref: '#/components/responses/netapps_UnprocessableEntity_17904fcfbc'
default:
$ref: '#/components/responses/GenericErrorResponse'
/wireguard_peers/{id}/config:
get:
summary: Retrieve Wireguard config template for Peer
description: Retrieve Wireguard config template for Peer
operationId: GetWireguardPeerConfig
tags:
- WireGuard Interfaces
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
text/plain:
schema:
type: string
example: '[Interface]
PrivateKey =
Address = 198.51.100.1/32
[Peer]
PublicKey = qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU=
AllowedIPs = 198.51.100.0/29
Endpoint = 203.0.113.0:51871
PersistentKeepalive = 25
'
'422':
$ref: '#/components/responses/GenericErrorResponse'
default:
$ref: '#/components/responses/GenericErrorResponse'
/wireless/detail/records/reports:
get:
summary: Get all Wireless Detail Records (WDRs) Reports
description: Returns the WDR Reports that match the given parameters.
operationId: GetWdrReports
tags:
- Reporting
parameters:
- $ref: '#/components/parameters/wireless_PageNumber'
- $ref: '#/components/parameters/wireless_PageSize'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WdrReport'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse'
x-latency-category: responsive
post:
x-latency-category: background
summary: Create a Wireless Detail Records (WDRs) Report
description: 'Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed
wireless data in the given time period.
'
operationId: CreateWdrReport
tags:
- Reporting
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WdrReportRequest'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WdrReport'
'422':
$ref: '#/components/responses/sim-cards-monitoring_wireless_UnprocessableEntity'
default:
$ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse'
/wireless/detail/records/reports/{id}:
delete:
summary: Delete a Wireless Detail Record (WDR) Report
description: Permanently deletes the specified Wireless Detail Record (WDR) report.
operationId: DeleteWdrReport
tags:
- Reporting
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WdrReport'
'404':
$ref: '#/components/responses/wireless_ResourceNotFound'
default:
$ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse'
x-latency-category: responsive
get:
x-latency-category: background
summary: Get a Wireless Detail Record (WDR) Report
description: Returns a single Wireless Detail Record (WDR) report by its identifier, including its parameters and current
status.
operationId: GetWdrReport
tags:
- Reporting
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WdrReport'
'404':
$ref: '#/components/responses/wireless_ResourceNotFound'
default:
$ref: '#/components/responses/sim-cards-monitoring_wireless_GenericErrorResponse'
/wireless/detail_records_reports:
get:
summary: Get all Wireless Detail Records (WDRs) Reports
description: Returns the WDR Reports that match the given parameters.
operationId: GetWdrReports
tags:
- Reporting
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WdrReport'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
post:
x-latency-category: background
summary: Create a Wireless Detail Records (WDRs) Report
description: 'Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed
wireless data in the given time period.
'
operationId: CreateWdrReport
tags:
- Reporting
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WdrReportRequest'
responses:
'201':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WdrReport'
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/wireless/detail_records_reports/{id}:
delete:
summary: Delete a Wireless Detail Record (WDR) Report
description: Permanently deletes the specified Wireless Detail Record (WDR) report.
operationId: DeleteWdrReport
tags:
- Reporting
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WdrReport'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
get:
x-latency-category: background
summary: Get a Wireless Detail Record (WDR) Report
description: Returns a single Wireless Detail Record (WDR) report by its identifier, including its parameters and current
status.
operationId: GetWdrReport
tags:
- Reporting
parameters:
- $ref: '#/components/parameters/ResourceId'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WdrReport'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/wireless/regions:
get:
tags:
- Wireless Regions
parameters:
- name: product
description: The product for which to list regions (e.g., 'public_ips', 'private_wireless_gateways').
schema:
type: string
example: public_ips
in: query
required: true
responses:
'200':
description: A list of wireless regions
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/wireless_Region'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: WirelessRegionsGetAll
summary: Get all wireless regions
description: Retrieve all wireless regions for the given product.
/wireless_blocklist_values:
get:
tags:
- Wireless Blocklists
parameters:
- name: type
description: The Wireless Blocklist type for which to list possible values (e.g., `country`, `mcc`, `plmn`).
schema:
type: string
enum:
- country
- mcc
- plmn
example: country
in: query
required: true
responses:
'200':
description: A list of possible wireless blocklist values
content:
application/json:
schema:
type: object
properties:
data:
oneOf:
- title: Country
type: array
items:
$ref: '#/components/schemas/wireless_Country'
- title: MCC
type: array
items:
$ref: '#/components/schemas/wireless_MCC'
- title: PLMN
type: array
items:
$ref: '#/components/schemas/wireless_PLMN'
required:
- data
examples:
country:
summary: Country values
value:
data:
- country_code: US
mcc:
summary: MCC values
value:
data:
- mcc: '310'
plmn:
summary: PLMN values
value:
data:
- plmn: '310260'
'422':
description: Missing or invalid blocklist type
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Error_c5290d5308'
examples:
missingType:
summary: Missing type
value:
code: '10027'
meta:
url: https://developers.telnyx.com/api/errors/10027
title: Missing required parameter
source:
pointer: /type
detail: 'The ''type'' query parameter is required. Must be one of: country, mcc, plmn'
invalidType:
summary: Invalid type
value:
code: '10027'
meta:
url: https://developers.telnyx.com/api/errors/10027
title: Invalid filter type
source:
pointer: /type
detail: 'Type must be one of: country, mcc, plmn'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
operationId: WirelessBlocklistsGetAll
summary: Get all possible wireless blocklist values
description: Retrieve all wireless blocklist values for a given blocklist type. The request returns `422` when `type`
is missing or invalid.
/wireless_blocklists:
get:
summary: Get all Wireless Blocklists
description: Get all Wireless Blocklists belonging to the user.
operationId: GetWirelessBlocklistsGateways
tags:
- Wireless Blocklists
parameters:
- $ref: '#/components/parameters/wireless_PageNumber_c5290d5308'
- $ref: '#/components/parameters/wireless_PageSize_c5290d5308'
- name: filter[name]
description: The name of the Wireless Blocklist.
in: query
required: false
schema:
type: string
example: my private gateway
- name: filter[type]
description: When the Private Wireless Gateway was last updated.
in: query
required: false
schema:
type: string
example: country
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/wireless_WirelessBlocklist'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: Unauthorized
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
post:
summary: Create a Wireless Blocklist
description: Create a Wireless Blocklist to prevent SIMs from connecting to certain networks.
operationId: CreateWirelessBlocklist
tags:
- Wireless Blocklists
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
description: The name of the Wireless Blocklist.
type: string
example: My Wireless Blocklist
type:
description: The type of wireless blocklist.
type: string
enum:
- country
- mcc
- plmn
example: country
values:
description: Values to block. The values here depend on the `type` of Wireless Blocklist.
type: array
items:
anyOf:
- $ref: '#/components/schemas/CountryCode'
- $ref: '#/components/schemas/MobileCountryCode'
- $ref: '#/components/schemas/PLMNCode'
example:
- CA
- US
required:
- name
- type
- values
responses:
'201':
description: Wireless Blocklist created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_WirelessBlocklist'
example:
data:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
name: North American Wireless Blocklist
type: country
values:
- CA
- MX
- US
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/wireless_blocklists/{id}:
delete:
summary: Delete a Wireless Blocklist
description: Permanently deletes the specified wireless blocklist from your account. The request returns `422` when
the wireless blocklist is assigned to a SIM Card Group.
operationId: DeleteWirelessBlocklist
tags:
- Wireless Blocklists
parameters:
- $ref: '#/components/parameters/WirelessBlocklistId'
responses:
'204':
description: Wireless Blocklist deleted
'404':
$ref: '#/components/responses/ResourceNotFound'
'422':
description: Wireless Blocklist is still assigned
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Error_c5290d5308'
examples:
wirelessBlocklistAssigned:
summary: Wireless Blocklist is still assigned
value:
code: '10027'
meta:
url: https://developers.telnyx.com/api/errors/10027
title: Cannot delete wireless blocklist
source:
pointer: /wireless_blocklist
detail: This wireless blocklist is associated with one or more SIM Cards or SIM Card Groups. Remove any
association(s) before deleting.
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
get:
summary: Get a Wireless Blocklist
description: Retrieve information about a Wireless Blocklist.
operationId: GetWirelessBlocklist
tags:
- Wireless Blocklists
parameters:
- $ref: '#/components/parameters/WirelessBlocklistId'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_WirelessBlocklist'
'404':
$ref: '#/components/responses/ResourceNotFound'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
patch:
summary: Update a Wireless Blocklist
description: Updates the specified wireless blocklist. The update is processed asynchronously, so the request is accepted
and completes in the background.
operationId: UpdateWirelessBlocklist
tags:
- Wireless Blocklists
parameters:
- $ref: '#/components/parameters/WirelessBlocklistId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
description: The name of the Wireless Blocklist.
type: string
example: My Wireless Blocklist
values:
description: Values to block. The values here depend on the `type` of Wireless Blocklist.
type: array
items:
anyOf:
- $ref: '#/components/schemas/CountryCode'
- $ref: '#/components/schemas/MobileCountryCode'
- $ref: '#/components/schemas/PLMNCode'
example:
- CA
- US
responses:
'202':
description: Update accepted and processed asynchronously. Poll GET /wireless_blocklists/{id} to check the result.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/wireless_WirelessBlocklist'
'422':
$ref: '#/components/responses/wireless_UnprocessableEntity_c5290d5308'
default:
$ref: '#/components/responses/wireless_GenericErrorResponse_c5290d5308'
/x402/credit_account:
post:
summary: Settle a payment
description: Settles an x402 payment using the quote ID and a signed payment authorization. The payment signature can
be provided via the `PAYMENT-SIGNATURE` header or the `payment_signature` body parameter. Settlement is idempotent
— submitting the same quote ID multiple times returns the existing transaction.
operationId: settleX402Payment
tags:
- x402 Payment Transactions
x-endpoint-cost: light
parameters:
- name: PAYMENT-SIGNATURE
in: header
description: Signed payment authorization for the quote. Alternative to providing `payment_signature` in the request
body.
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/X402SettleRequest'
example:
id: quote_abc123
payment_signature: 0xabc123...
responses:
'201':
description: Payment settled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/X402TransactionResponse'
example:
data:
id: de06811a-2e43-4561-af5a-7d0a26e20aaa
record_type: x402_transaction
amount: '50.00'
currency: USD
status: settled
quote_id: quote_abc123
tx_hash: 0xabc123def456...
created_at: '2026-03-13T15:00:00Z'
'200':
description: Payment already settled (idempotent response)
content:
application/json:
schema:
$ref: '#/components/schemas/X402TransactionResponse'
'400':
description: Bad request — invalid signature, expired authorization, invalid nonce, or malformed payment payload
content:
application/json:
schema:
$ref: '#/components/schemas/X402SettlementErrorResponse'
examples:
invalid_signature:
summary: Invalid payment signature
value:
errors:
- code: invalid_signature
title: Payment Failed
detail: 'Payment failed: the payment signature is invalid. Please sign a new payment authorization.'
expired_authorization:
summary: Expired payment authorization
value:
errors:
- code: expired_authorization
title: Payment Failed
detail: 'Payment failed: the payment authorization has expired. Please request a new quote and try again.'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'422':
description: Unprocessable entity — missing required parameters or insufficient funds/allowance
content:
application/json:
schema:
$ref: '#/components/schemas/X402SettlementErrorResponse'
examples:
validation_error:
summary: Missing required parameter
value:
errors:
- code: unknown
title: Invalid request
detail: id is required
insufficient_balance:
summary: Insufficient wallet balance
value:
errors:
- code: insufficient_balance
title: Payment Failed
detail: 'Payment failed: your wallet does not have enough USDC to complete this transaction. Please
add funds and try again.'
'500':
description: Internal server error — facilitator unavailable, transaction failed on-chain, or unknown error
content:
application/json:
schema:
$ref: '#/components/schemas/X402SettlementErrorResponse'
example:
errors:
- code: transaction_failed
title: Payment Failed
detail: Payment transaction failed on-chain. Your funds have not been transferred. Please try again or contact
support.
'502':
description: Bad gateway — upstream settlement service error
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
'503':
description: Service unavailable — facilitator or settlement timeout
content:
application/json:
schema:
$ref: '#/components/schemas/X402SettlementErrorResponse'
example:
errors:
- code: facilitator_timeout
title: Payment Failed
detail: Payment processing timed out. Your funds have not been transferred. Please try again.
x-latency-category: responsive
/x402/credit_account/payments:
get:
summary: List x402 payments
description: Returns a paginated list of the authenticated user's x402 payment transactions, newest first. Organization
sub-users must have read permission on transactions; without it the list is empty.
operationId: listX402Payments
tags:
- x402 Payment Transactions
x-endpoint-cost: light
parameters:
- $ref: '#/components/parameters/x402-transactions_PageNumber'
- $ref: '#/components/parameters/x402-transactions_PageSize'
responses:
'200':
description: List of x402 payment transactions
content:
application/json:
schema:
$ref: '#/components/schemas/X402TransactionListResponse'
example:
data:
- id: de06811a-2e43-4561-af5a-7d0a26e20aaa
record_type: x402_transaction
amount: '50.00'
currency: USD
status: settled
quote_id: quote_abc123
tx_hash: 0xabc123def456...
created_at: '2026-03-13T15:00:00Z'
updated_at: '2026-03-13T15:00:00Z'
- id: f8a1c2d3-4b5e-6789-abcd-ef0123456789
record_type: x402_transaction
amount: '25.00'
currency: USD
status: settled
quote_id: quote_def456
tx_hash: 0x789abcdef012...
created_at: '2026-03-12T10:30:00Z'
updated_at: '2026-03-12T10:30:00Z'
meta:
page_number: 1
page_size: 100
total_pages: 1
total_results: 2
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden — x402 payments not enabled or account tier ineligible
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
x-latency-category: responsive
/x402/credit_account/payments/{id}:
get:
summary: Get an x402 payment
description: Returns a single x402 payment transaction by ID. The transaction must belong to the authenticated user;
organization sub-users must have read permission on transactions. Returns 404 if the transaction does not exist or
belongs to another user.
operationId: getX402Payment
tags:
- x402 Payment Transactions
x-endpoint-cost: light
parameters:
- name: id
in: path
required: true
description: The x402 payment transaction ID.
schema:
type: string
format: uuid
responses:
'200':
description: x402 payment transaction details
content:
application/json:
schema:
$ref: '#/components/schemas/X402TransactionDetailResponse'
example:
data:
id: de06811a-2e43-4561-af5a-7d0a26e20aaa
record_type: x402_transaction
amount: '50.00'
currency: USD
status: settled
quote_id: quote_abc123
tx_hash: 0xabc123def456...
created_at: '2026-03-13T15:00:00Z'
updated_at: '2026-03-13T15:00:00Z'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden — x402 payments not enabled or account tier ineligible
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'404':
description: Not found — the transaction does not exist or belongs to another user
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
source:
pointer: /
x-latency-category: responsive
/x402/credit_account/quote:
post:
summary: Create a payment quote
description: Creates a payment quote for the specified USD amount. Returns payment details including the x402 payment
requirements, network, and expiration time. The quote must be settled before it expires.
operationId: createX402Quote
tags:
- x402 Payment Transactions
x-endpoint-cost: light
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/X402QuoteRequest'
example:
amount_usd: '50.00'
responses:
'200':
description: Quote created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/X402QuoteResponse'
example:
data:
id: quote_abc123
record_type: quote
amount_usd: '50.00'
amount_crypto: '50000000'
network: eip155:8453
expires_at: '2026-03-13T15:05:00Z'
payment_requirements:
x402Version: 2
resource:
url: https://api.telnyx.com/v2/x402/credit_account
description: Payment of $50.00 USD
mimeType: application/json
accepts:
- scheme: exact
network: eip155:8453
amount: '50000000'
asset: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
payTo: '0x1234567890abcdef1234567890abcdef12345678'
maxTimeoutSeconds: 900
extra:
quoteId: quote_abc123
facilitatorUrl: https://api.cdp.coinbase.com/platform/v2/x402
name: USD Coin
version: '2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
'403':
description: Forbidden — x402 payments not enabled, account tier ineligible, or account suspended
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
'422':
description: Unprocessable entity — invalid amount
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: unknown
title: Invalid request
detail: amount_usd must be at least 5.00
'502':
description: Bad gateway — upstream payment service failed to create quote
content:
application/json:
schema:
$ref: '#/components/schemas/x402-transactions_ErrorResponse'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
x-latency-category: responsive
components:
callbacks: {}
examples:
Maximum20JobsAllowed:
value:
errors:
- code: '10015'
title: Bad Request
detail: You can have at most 20 pending or in progress jobs
source:
pointer: /base
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
MaximumAllowedPhoneNumbers:
value:
errors:
- code: '10015'
title: Bad Request
detail: 1000 numbers is the maximum allowed.
source:
pointer: /phone_numbers
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
MinimumAllowedPhoneNumbers:
value:
errors:
- code: '10015'
title: Bad Request
detail: You must provide at least 1 phone number.
source:
pointer: /phone_numbers
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
MixedIdsAndE164Values:
value:
errors:
- code: '10015'
title: Bad Request
detail: You must specify either all phone numbers in the e164 format or all as phone number ids
source:
pointer: /phone_numbers
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
NotAuthorized:
value:
errors:
- code: '10006'
title: Not authorized
detail: You are not authorized to access the requested resource.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10006
PhoneNumberOwnership:
value:
errors:
- code: '10015'
title: Bad Request
detail: You must own every number in the bulk request
source:
pointer: /phone_numbers
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
PhoneNumbersMustBePresent:
value:
errors:
- code: '10015'
title: Bad Request
detail: must be present
source:
pointer: /phone_numbers
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
headers:
IdempotentReplayed:
description: Present with value `true` when Edge replayed a stored successful response for the supplied Idempotency-Key.
Omitted for first-time requests and error responses.
schema:
type: boolean
enum:
- true
example: true
PaymentReceipt:
description: Machine Payment Protocol receipt returned on successful paid responses. Contains the receipt token identifying
the settled payment; keep it for audit and reconciliation alongside the credited transaction.
schema:
type: string
WWWAuthenticateChallenge:
description: 'Machine Payment Protocol challenge(s) returned on a 402 response, following the HTTP WWW-Authenticate
format (RFC 9110). Construct a payment credential from a challenge and retry the same request with an `Authorization:
Payment ...` header carrying it.'
schema:
type: string
links: {}
parameters:
10dlc_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[telnyx_campaign_id], filter[telnyx_brand_id],
filter[tcr_campaign_id], filter[tcr_brand_id]'
schema:
type: object
properties:
telnyx_campaign_id:
type: string
format: uuid
example: f3575e15-32ce-400e-a4c0-dd78800c20b0
description: Filter results by the Telnyx Campaign id
telnyx_brand_id:
type: string
format: uuid
example: f3575e15-32ce-400e-a4c0-dd78800c20b0
description: Filter results by the Telnyx Brand id
tcr_campaign_id:
type: string
example: CAMPID3
description: Filter results by the TCR Campaign id
tcr_brand_id:
type: string
example: BRANDID
description: Filter results by the TCR Brand id
AccountSid:
name: account_sid
in: path
required: true
description: The UUID of the Telnyx account that owns the resource, for example `f5586561-8ff0-4291-a51b-c7dfe4139ff9`.
The `account_sid` path segment is kept for Twilio API compatibility, but the value is a Telnyx account UUID, not a
Twilio `AC...` SID. It must match the account that owns the API key used to authenticate the request, otherwise the
endpoint returns `404`. The same value is sent as `AccountSid` in TeXML webhooks.
schema:
type: string
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
After:
name: after
in: query
required: false
description: Return results with a cursor position after this value.
schema:
type: integer
minimum: 0
default: 0
AgentId:
name: id
in: path
required: true
description: The Telnyx-assigned agent identifier.
schema:
type: string
format: uuid
ArtifactId:
name: artifact_id
in: path
required: true
description: Unique identifier for a meeting session artifact.
schema:
type: string
examples:
- mtgart_b2c3d4e5-f6a7-8901-bcde-f23456789012
AuthorizationBearer:
name: authorization_bearer
in: header
schema:
type: string
description: Authenticates the request with your Telnyx API V2 KEY
description: 'Format: Bearer '
AvatarId:
name: avatar_id
in: path
required: true
description: Stable identifier of a Telnyx stock avatar or an organization-owned custom avatar.
schema:
$ref: '#/components/schemas/AvatarId'
BatchId:
name: id
in: path
required: true
description: Email validation batch UUID.
schema:
type: string
format: uuid
BcPageNumber:
name: page[number]
in: query
description: 1-based page number. Out-of-range values return an empty page with correct meta.
required: false
schema:
type: integer
minimum: 1
default: 1
example: 1
BcPageSize:
name: page[size]
in: query
description: Items per page. Maximum 250; values above are clamped to 250.
required: false
schema:
type: integer
minimum: 1
maximum: 250
default: 20
example: 20
BlocksPageAfter:
name: page[after]
in: query
description: Opaque cursor (`Base.url_encode64` of `{"created_at","id"}`). Cursor mode; mutually exclusive with `page[number]`
and `page[before]`.
schema:
type: string
BlocksPageBefore:
name: page[before]
in: query
description: Opaque cursor (see `page[after]`). Mutually exclusive with `page[after]` and `page[number]`.
schema:
type: string
BlocksPageNumber:
name: page[number]
in: query
description: Offset page number (≥1, default 1).
schema:
type: integer
minimum: 1
default: 1
BlocksPageSize:
name: page[size]
in: query
description: Page size (1–100, default 25).
schema:
type: integer
minimum: 1
maximum: 100
default: 25
BrandId:
name: id
in: path
required: true
description: The Telnyx-assigned brand identifier.
schema:
type: string
format: uuid
BundleId:
required: true
schema:
title: Bundle Id
type: string
format: uuid
example: 8661948c-a386-4385-837f-af00f40f111a
description: Billing bundle's ID, this is used to identify the billing bundle in the API.
name: bundle_id
in: path
description: Unique identifier of the bundle.
CallControlId:
name: call_control_id
description: Unique identifier and token for controlling the call
in: path
required: true
schema:
type: string
CallId:
name: call_id
in: path
required: true
description: Call identifier used to retrieve reports owned by the authenticated user.
schema:
type: string
format: uuid
CallSid:
name: call_sid
in: path
required: true
description: The CallSid that identifies the call to update.
schema:
type: string
CallSidOrParticipantLabel:
name: call_sid_or_participant_label
in: path
required: true
description: CallSid or Label of the Participant to update.
schema:
type: string
ConferenceRegion:
name: region
in: query
description: Region where the conference data is located
required: false
schema:
type: string
enum:
- Australia
- Europe
- Middle East
- US
ConferenceSid:
name: conference_sid
in: path
required: true
description: The ConferenceSid that uniquely identifies a conference.
schema:
type: string
ConferenceStatus:
name: Status
in: query
required: false
description: Filters conferences by status.
schema:
type: string
enum:
- init
- in-progress
- completed
example: in-progress
ConnectionId:
name: connection_id
description: Telnyx connection id
in: path
required: true
schema:
type: string
example: '1293384261075731461'
DateCreated:
name: DateCreated
in: query
required: false
description: Filters conferences by the creation date. Expected format is YYYY-MM-DD. Also accepts inequality operators,
e.g. DateCreated>=2023-05-22.
schema:
type: string
example: '>=2023-05-22'
DateUpdated:
name: DateUpdated
in: query
required: false
description: Filters conferences by the time they were last updated. Expected format is YYYY-MM-DD. Also accepts inequality
operators, e.g. DateUpdated>=2023-05-22.
schema:
type: string
example: '>=2023-05-22'
DirId:
name: dir_id
in: path
description: The DIR id. Lowercase UUID.
required: true
schema:
type: string
format: uuid
example: 16635d38-75a6-4481-82e8-69af60e05011
DocReqsRequirementId:
name: id
in: path
description: Uniquely identifies the requirement_type record
example: a9dad8d5-fdbd-49d7-aa23-39bb08a5ebaa
required: true
schema:
type: string
format: uuid
DocReqsRequirementTypeId:
name: id
in: path
description: Uniquely identifies the requirement_type record
example: a38c217a-8019-48f8-bff6-0fdd9939075b
required: true
schema:
type: string
format: uuid
DomainsPageSize:
name: page[size]
in: query
required: false
description: Number of records per page
schema:
type: integer
minimum: 1
maximum: 100
default: 25
DraftId:
name: draft_id
in: path
required: true
description: Email draft UUID.
schema:
type: string
format: uuid
DraftInboxId:
name: inbox_id
in: path
required: true
description: Email inbox UUID.
schema:
type: string
format: uuid
EmailDomainDomainId:
name: domain_id
in: path
required: true
description: Email domain UUID
schema:
type: string
format: uuid
EmailDomainId:
name: id
in: path
required: true
description: Email domain UUID
schema:
type: string
format: uuid
EmailMessageId:
name: id
in: path
required: true
description: Email message UUID.
schema:
type: string
format: uuid
EndTime:
name: EndTime
in: query
required: false
description: Filters calls by their end date. Expected format is YYYY-MM-DD
schema:
type: string
example: '2023-05-22'
EndTime_gt:
name: EndTime>
in: query
required: false
description: Filters calls by their end date (after). Expected format is YYYY-MM-DD
schema:
type: string
x-stainless-param: EndTime_gt
example: '2023-05-22'
EndTime_lt:
name: EndTime<
in: query
required: false
description: Filters calls by their end date (before). Expected format is YYYY-MM-DD
schema:
type: string
x-stainless-param: EndTime_lt
example: '2023-05-22'
EnterpriseId:
name: enterprise_id
in: path
description: The enterprise id. Lowercase UUID.
required: true
schema:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
FilterBasicStatusLifecycle:
name: filter[status]
description: Filter by a specific status of the resource's lifecycle.
in: query
required: false
schema:
type: string
enum:
- in-progress
- completed
- failed
example: in-progress
FilterCivicAddressesConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: Filter parameter for civic addresses (deepObject style). Supports filtering by country.
schema:
type: object
properties:
country:
type: array
example:
- US
- CA
- MX
- BR
items:
type: string
description: The ISO 3166-1 alpha-2 country code (2 characters)
description: The country (or countries) to filter addresses by.
FilterConnectionsConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: Filter parameter for external connections (deepObject style). Supports filtering by connection_name, external_sip_connection,
id, created_at, and phone_number.
schema:
type: object
properties:
connection_name:
type: object
properties:
contains:
type: string
default: null
example: My Connection
description: If present, connections with connection_name containing the given value will be
returned. Matching is not case-sensitive. Requires at least three characters.
external_sip_connection:
enum:
- zoom
- operator_connect
type: string
example: zoom
description: If present, connections with external_sip_connection matching the given value will be
returned.
id:
type: string
default: null
example: '1930241863466354012'
description: If present, connections with id matching the given value will be returned.
created_at:
type: string
default: null
example: '2022-12-31'
description: If present, connections with created_at date matching the given YYYY-MM-DD date will
be returned.
phone_number:
type: object
properties:
contains:
type: string
example: '+15555555555'
description: If present, connections associated with the given phone_number will be returned. A full match
is necessary with a e164 format.
description: 'Phone number filter for connections. Note: Despite the ''contains'' name, this requires a full E164
match per the original specification.'
FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains],
filter[used_as_emergency], filter[street_address][contains], filter[address_book][eq]'
schema:
type: object
properties:
street_address:
type: object
properties:
contains:
type: string
description: If present, addresses with street_address containing the given value will be returned.
Matching is not case-sensitive. Requires at least three characters.
address_book:
type: object
properties:
eq:
type: string
description: If present, only returns results with the address_book flag equal to the given value.
customer_reference:
oneOf:
- type: string
description: If present, addresses with customer_reference containing the given value will be returned.
Matching is not case-sensitive.
- type: object
properties:
eq:
type: string
description: Exact match for customer_reference.
contains:
type: string
description: Partial match for customer_reference. Matching is not case-sensitive.
used_as_emergency:
type: string
description: 'If set as ''true'', only addresses used as the emergency address for at least one active phone-number
will be returned. When set to ''false'', the opposite happens: only addresses not used as the emergency address
from phone-numbers will be returned.'
FilterCreatedAfter:
name: filter[created_after]
in: query
description: '`created_at > value` (ISO 8601).'
schema:
type: string
format: date-time
FilterCreatedBefore:
name: filter[created_before]
in: query
description: '`created_at < value` (ISO 8601).'
schema:
type: string
format: date-time
FilterDocumentLinksConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter for document links (deepObject style). Originally: filter[linked_record_type],
filter[linked_resource_id]'
schema:
type: object
additionalProperties: false
properties:
linked_record_type:
type: string
example: porting_order
description: The linked_record_type of the document to filter on.
linked_resource_id:
type: string
format: uuid
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
description: The linked_resource_id of the document to filter on.
FilterDocumentsConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter for documents (deepObject style). Originally: filter[filename][contains],
filter[customer_reference][eq], filter[customer_reference][in][], filter[created_at][gt], filter[created_at][lt]'
schema:
type: object
additionalProperties: false
properties:
filename:
type: object
additionalProperties: false
properties:
contains:
type: string
example: invoice
description: Filter by string matching part of filename.
customer_reference:
type: object
additionalProperties: false
properties:
eq:
type: string
example: MY REF 001
description: Filter documents by a customer reference.
in:
type: array
items:
type: string
example:
- MY REF 001
- MY REF 002
description: Filter documents by a list of customer references.
created_at:
type: object
additionalProperties: false
properties:
gt:
type: string
format: date-time
example: '2021-04-09T22:25:27.521Z'
description: Filter by created at greater than provided value.
lt:
type: string
format: date-time
example: '2021-04-09T22:25:27.521Z'
description: Filter by created at less than provided value.
example:
filename:
contains: invoice
customer_reference:
in:
- REF001
- REF002
created_at:
gt: '2021-01-01T00:00:00Z'
FilterDomainId:
name: filter[domain_id]
in: query
description: Exact-match filter on domain_id (UUID).
schema:
type: string
format: uuid
FilterLogMessagesConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: Filter parameter for log messages (deepObject style). Supports filtering by external_connection_id and
telephone_number with eq/contains operations.
schema:
type: object
properties:
external_connection_id:
type: string
example: 67ea7693-9cd5-4a68-8c76-abb3aa5bf5d2
description: The external connection ID to filter by or "null" to filter for logs without an external connection
ID
telephone_number:
type: object
properties:
eq:
type: string
example: '+1234567890'
description: The phone number to filter log messages for or "null" to filter for logs without a phone number
x-format: E164
contains:
type: string
example: '+123'
description: The partial phone number to filter log messages for. Requires 3-15 digits.
description: Telephone number filter operations for log messages. Use 'eq' for exact matches or 'contains' for
partial matches.
FilterMobileNetworkOperatorsConsolidated:
name: filter
in: query
explode: true
description: 'Consolidated filter parameter for mobile network operators (deepObject style). Originally: filter[name][starts_with],
filter[name][contains], filter[name][ends_with], filter[country_code], filter[mcc], filter[mnc], filter[tadig], filter[network_preferences_enabled]'
schema:
type: object
properties:
name:
type: object
properties:
starts_with:
type: string
example: AT
description: Filter by name starting with.
contains:
type: string
example: T&T
description: Filter by name containing match.
ends_with:
type: string
example: T
description: Filter by name ending with.
description: Advanced name filtering operations
country_code:
type: string
example: US
description: Filter by exact country_code.
mcc:
type: string
example: '310'
description: Filter by exact MCC.
mnc:
type: string
example: '410'
description: Filter by exact MNC.
tadig:
type: string
example: USACG
description: Filter by exact TADIG.
network_preferences_enabled:
type: boolean
example: true
description: Filter by network_preferences_enabled.
FilterName:
name: filter[name]
in: query
required: false
description: Case-insensitive substring filter on the name field.
schema:
type: string
FilterOTAUpdatesConsolidated:
name: filter
in: query
explode: true
description: 'Consolidated filter parameter for OTA updates (deepObject style). Originally: filter[status], filter[sim_card_id],
filter[type]'
schema:
type: object
properties:
status:
type: string
enum:
- in-progress
- completed
- failed
example: in-progress
description: Filter by a specific status of the resource's lifecycle.
sim_card_id:
type: string
description: The SIM card identification UUID.
type:
type: string
enum:
- sim_card_network_preferences
example: sim_card_network_preferences
description: Filter by type.
FilterOrganizationUserEmail:
name: filter[email]
in: query
description: Filter by email address (partial match)
schema:
type: string
FilterOrganizationUserStatus:
name: filter[user_status]
in: query
description: Filter by user status
schema:
type: string
enum:
- enabled
- disabled
- blocked
FilterPhoneNumbersConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: Filter parameter for phone numbers (deepObject style). Supports filtering by phone_number, civic_address_id,
and location_id with eq/contains operations.
schema:
type: object
properties:
phone_number:
type: object
properties:
eq:
type: string
example: '+19705555098'
description: The phone number to filter by (exact match)
contains:
type: string
example: '+1970'
description: The phone number to filter by (partial match)
civic_address_id:
type: object
properties:
eq:
type: string
example: '19990261512338516954'
description: The civic address ID to filter by
location_id:
type: object
properties:
eq:
type: string
example: '19995665508264022121'
description: The location ID to filter by
FilterProvider:
name: filter[provider]
in: query
required: false
description: Filter by voice synthesis provider. Case-insensitive.
schema:
type: string
enum:
- telnyx
- minimax
- Telnyx
- Minimax
FilterReason:
name: filter[reason]
in: query
description: Exact-match filter on reason.
schema:
$ref: '#/components/schemas/Reason'
FilterReleasesConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: Filter parameter for releases (deepObject style). Supports filtering by status, civic_address_id, location_id,
and phone_number with eq/contains operations.
schema:
type: object
properties:
status:
type: object
properties:
eq:
type: array
items:
type: string
enum:
- pending_upload
- pending
- in_progress
- complete
- failed
- expired
- unknown
example:
- pending
- in_progress
description: The status of the release to filter by
civic_address_id:
type: object
properties:
eq:
type: string
example: '19990261512338516954'
description: The civic address ID to filter by
location_id:
type: object
properties:
eq:
type: string
example: '19995665508264022121'
description: The location ID to filter by
phone_number:
type: object
properties:
eq:
type: string
example: '+1234567890'
description: The phone number to filter by
x-format: E164
contains:
type: string
example: '+123'
description: The partial phone number to filter by. Requires 3-15 digits.
description: Phone number filter operations. Use 'eq' for exact matches or 'contains' for partial matches.
FilterRequirementTypesConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter for requirement types (deepObject style). Originally: filter[name]'
schema:
type: object
additionalProperties: false
properties:
name:
type: object
additionalProperties: false
properties:
contains:
type: string
example: utility bill
description: Filters requirement types to those whose name contains a certain string.
FilterRequirementsConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter for requirements (deepObject style). Originally: filter[country_code], filter[phone_number_type],
filter[action]'
schema:
type: object
additionalProperties: false
properties:
country_code:
type: string
example: US
description: Filters results to those applying to a 2-character (ISO 3166-1 alpha-2) country code
phone_number_type:
type: string
enum:
- local
- mobile
- multipurpose
- national
- shared_cost
- toll_free
example: local
description: Filters results to those applying to a specific phone_number_type
action:
type: string
enum:
- branded_calling
- ordering
- porting
example: porting
description: Filters requirements to those applying to a specific action.
FilterSIMCardActionsConsolidated:
name: filter
in: query
explode: true
description: 'Consolidated filter parameter for SIM card actions (deepObject style). Originally: filter[sim_card_id],
filter[status], filter[bulk_sim_card_action_id], filter[action_type]'
schema:
type: object
properties:
sim_card_id:
type: string
format: uuid
example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9
description: A valid SIM card ID.
status:
type: string
enum:
- in-progress
- completed
- failed
example: in-progress
description: Filter by a specific status of the resource's lifecycle.
bulk_sim_card_action_id:
type: string
format: uuid
example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9
description: Filter by a bulk SIM card action ID.
action_type:
type: string
enum:
- enable
- enable_standby_sim_card
- disable
- set_standby
- remove_public_ip
- set_public_ip
- enable_voice
- disable_voice
example: disable
description: Filter by action type.
FilterSIMCardConsolidated:
name: filter
in: query
explode: true
description: 'Consolidated filter parameter for SIM cards (deepObject style). Originally: filter[iccid], filter[msisdn],
filter[status], filter[tags]'
schema:
type: object
properties:
iccid:
type: string
example: '89310410106543789301'
description: A search string to partially match for the SIM card's ICCID.
msisdn:
type: string
example: '+13109976224'
description: A search string to match for the SIM card's MSISDN.
status:
type: array
items:
type: string
enum:
- enabled
- disabled
- standby
- data_limit_exceeded
- unauthorized_imei
description: Filter by a SIM card's status.
tags:
type: array
items:
type: string
example:
- personal
- customers
- active-customers
description: "A list of SIM card tags to filter on. \n If the SIM card contains all of\
\ the given tags they will be found. \nFor example, if the SIM cards have the following\
\ tags: \n ['customers', 'staff', 'test']\n ['test'] \n ['customers'] \n\
\nSearching for ['customers', 'test'] returns only the first because it's the only one with\
\ both tags. Searching for test returns the first two SIMs, because both of them have such\
\ tag. Searching for customers returns the first and last SIMs. \n"
FilterSIMCardGroupId:
name: filter[sim_card_group_id]
description: A valid SIM card group ID.
schema:
format: uuid
type: string
example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9
in: query
FilterSIMCardId:
name: filter[sim_card_id]
description: A valid SIM card ID.
schema:
format: uuid
type: string
example: 47a1c2b0-cc7b-4ab1-bb98-b33fb0fc61b9
in: query
FilterSIMCardOrdersConsolidated:
name: filter
in: query
explode: true
description: 'Consolidated filter parameter for SIM card orders (deepObject style). Originally: filter[created_at],
filter[updated_at], filter[quantity], filter[cost.amount], filter[cost.currency], filter[address.id], filter[address.street_address],
filter[address.extended_address], filter[address.locality], filter[address.administrative_area], filter[address.country_code],
filter[address.postal_code]'
schema:
type: object
properties:
created_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: Filter by ISO 8601 formatted date-time string matching resource creation date-time.
updated_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: Filter by ISO 8601 formatted date-time string matching resource last update date-time.
quantity:
type: integer
example: 21
description: Filter orders by how many SIM cards were ordered.
cost.amount:
description: The total monetary amount of the order.
type: string
example: '2.53'
cost.currency:
description: Filter by ISO 4217 currency string.
type: string
example: USD
address.id:
type: string
example: '1293384261075731499'
description: Uniquely identifies the address for the order.
address.street_address:
type: string
example: 600 Congress Avenue
description: Returns entries with matching name of the street where the address is located.
address.extended_address:
type: string
example: 14th Floor
description: Returns entries with matching name of the supplemental field for address information.
address.locality:
type: string
example: Austin
description: Filter by the name of the city where the address is located.
address.administrative_area:
type: string
example: TX
description: Filter by state or province where the address is located.
address.country_code:
type: string
example: US
description: Filter by the mobile operator two-character (ISO 3166-1 alpha-2) origin country code.
address.postal_code:
type: string
example: '78701'
description: Filter by postal code for the address.
FilterUploadsConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: Filter parameter for uploads (deepObject style). Supports filtering by status, civic_address_id, location_id,
and phone_number with eq/contains operations.
schema:
type: object
properties:
status:
type: object
properties:
eq:
type: array
items:
type: string
enum:
- pending_upload
- pending
- in_progress
- success
- error
example:
- pending_upload
- pending
description: The status of the upload to filter by
civic_address_id:
type: object
properties:
eq:
type: string
example: '19990261512338516954'
description: The civic address ID to filter by
location_id:
type: object
properties:
eq:
type: string
example: '19995665508264022121'
description: The location ID to filter by
phone_number:
type: object
properties:
eq:
type: string
example: '+19705555098'
description: The phone number to filter by (exact match)
contains:
type: string
example: '+1970'
description: The phone number to filter by (partial match)
ForceQuery:
name: force
in: query
description: Force-delete a group with active suppressions. Only `"true"` (string) or `true` (bool) are truthy; all
other values are false.
schema:
oneOf:
- type: string
enum:
- 'true'
- 'false'
- type: boolean
FqdnConnectionId:
name: fqdn_connection_id
in: path
required: true
schema:
type: string
description: The ID of the FQDN connection.
FqdnId:
name: id
description: Identifies the resource.
in: path
required: true
schema:
type: string
example: '1517907029795014409'
x-format: int64
FriendlyName:
name: FriendlyName
in: query
required: false
description: Filters conferences by their friendly name.
schema:
type: string
example: weekly_review_call
From:
name: From
in: query
required: false
description: Filters calls by the from number.
schema:
type: string
example: '+1312345678'
FromTimestamp:
name: from
in: query
description: Inclusive ISO 8601 start timestamp. Defaults to 30 days ago when omitted.
required: false
schema:
type: string
format: date-time
GcbChannelNumberZoneId:
name: channel_zone_id
in: path
description: Channel zone identifier
required: true
schema:
type: string
GcbChannelZoneId:
name: channel_zone_id
in: path
description: Channel zone identifier
required: true
schema:
type: string
Id:
name: id
description: Identifies the resource.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
IdempotencyKey:
name: Idempotency-Key
in: header
required: false
description: Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255
letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying
that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return
400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different
request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in
the key.
schema:
type: string
minLength: 1
maxLength: 255
pattern: ^[A-Za-z0-9_-]{1,255}$
example: 8e03978e-40d5-43e8-bc93-6894a57f9326
IfMatch:
name: If-Match
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
description: Exact quoted resource-version ETag; an exact intermediary-weakened echo W/"n" is accepted. Wildcard, combined
and malformed validators are rejected; stale 412; missing 428. HTTP field names are case-insensitive. Replayed idempotent
result is checked first.
InboxIdPathParam:
name: inbox_id
in: path
required: true
description: Email inbox UUID.
schema:
type: string
format: uuid
IncludeCancelledAccounts:
name: include_cancelled_accounts
in: query
required: false
description: Specifies if cancelled accounts should be included in the results.
schema:
type: boolean
example: true
default: false
IncludeGroups:
name: include_groups
in: query
description: When set to true, includes the groups array for each user in the response. The groups array contains objects
with id and name for each group the user belongs to.
schema:
type: boolean
default: false
IncludeICCIDs:
name: include_iccids
in: query
description: It includes a list of associated ICCIDs.
schema:
type: boolean
default: false
example: true
IncludeSIMCardGroup:
name: include_sim_card_group
in: query
description: It includes the associated SIM card group object in the response when present.
schema:
type: boolean
default: false
example: true
IntId:
name: id
description: Identifies the resource.
in: path
required: true
schema:
type: string
example: '1293384261075731499'
IpId:
name: id
description: Identifies the type of resource.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
Limit:
name: limit
in: query
required: false
description: Maximum number of results to return per page.
schema:
type: integer
minimum: 1
maximum: 1000
default: 100
MediaName:
name: media_name
description: Uniquely identifies a media resource.
in: path
required: true
schema:
type: string
MeetingSessionId:
name: id
in: path
required: true
description: Unique identifier for the meeting session.
schema:
type: string
examples:
- mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890
MessageIdPathParam:
name: message_id
in: path
required: true
description: Inbound message UUID.
schema:
type: string
format: uuid
MessagingProfileId:
name: id
in: path
description: The id of the messaging profile to retrieve
required: true
schema:
type: string
format: uuid
NumberLookupType:
name: type
in: query
required: false
description: Specifies the type of number lookup to be performed. May be supplied more than once to request several
data sources in a single call (for example, `?type=carrier&type=enhanced-caller-name`). Each requested type populates
the corresponding object in the response.
schema:
type: string
enum:
- carrier
- caller-name
- caller-identity
- enhanced-caller-name
Page:
name: Page
in: query
required: false
description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.
schema:
type: integer
example: 1
PageAfter:
name: page[after]
in: query
required: false
description: Cursor for records after the provided value (cursor pagination)
schema:
type: string
PageBefore:
name: page[before]
in: query
required: false
description: Cursor for records before the provided value (cursor pagination)
schema:
type: string
PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
minimum: 1
default: 1
description: The page number to load
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
PageCursor:
name: page_cursor
in: query
description: Opaque URL-safe Base64 cursor returned by a previous list response.
required: false
schema:
type: string
example: eyJpbnNlcnRlZF9hdCI6IjIwMjQtMDEtMDEifQ
PageNumber:
name: page[number]
in: query
required: false
description: Page number to return (1-based). Defaults to 1.
schema:
type: integer
minimum: 1
default: 1
example: 1
PageSize:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: 10
PageSizeTexml:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: 10
PageToken:
name: PageToken
in: query
required: false
description: Used to request the next page of results.
schema:
type: string
PathCustomerServiceRecordId:
name: customer_service_record_id
in: path
description: The ID of the customer service record
required: true
schema:
type: string
PathEmail:
name: email
in: path
required: true
description: 'Recipient address (normalized: trim + lower-case before matching).'
schema:
type: string
PathId:
name: id
in: path
required: true
description: Resource UUID. Malformed UUIDs are treated as not-found (not 400).
schema:
type: string
format: uuid
PathPortingOrderID:
name: id
description: Porting Order id
in: path
required: true
schema:
type: string
format: uuid
PathPortingOrdersActivationJobID:
name: activationJobId
description: Activation Job Identifier
in: path
required: true
schema:
type: string
format: uuid
PhoneNumber:
name: phone_number
description: The phone number to be looked up
in: path
required: true
schema:
type: string
example: '+18665552368'
PhoneNumberPath:
name: phone_number
in: path
required: true
description: Phone number in E.164 format (`+1NPANXXXXXX` for US/CA). The leading `+` MUST be URL-encoded as `%2B` (e.g.
`%2B19493253498`).
schema:
type: string
example: '+19493253498'
PrivateWirelessGatewayId:
name: id
description: Identifies the private wireless gateway.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
QueryIncludePhoneNumbers:
name: include_phone_numbers
in: query
required: false
description: Include the first 50 phone number objects in the results
schema:
type: boolean
default: true
QueueSid:
name: queue_sid
in: path
required: true
description: The QueueSid that identifies the call queue.
schema:
type: string
RecordingId:
name: recording_id
description: Uniquely identifies the recording by id.
in: path
required: true
schema:
type: string
RecordingSid:
description: Uniquely identifies the recording by id.
name: recording_sid
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
RecordingTranscriptionId:
name: recording_transcription_id
in: path
required: true
description: Uniquely identifies the recording transcription by id.
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
RecordingTranscriptionSid:
description: Uniquely identifies the recording transcription by id.
name: recording_transcription_sid
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
RequirementVersion:
name: version
in: query
description: Filter by requirement version number. When omitted, returns the currently-active version.
required: false
schema:
type: integer
ResourceId:
name: id
description: Identifies the resource.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
SIMCardGroupId:
name: id
description: Identifies the SIM group.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
SIMCardId:
name: id
description: Identifies the SIM.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
ShortCodeId:
name: id
in: path
description: The id of the short code
required: true
schema:
type: string
format: uuid
SiprecConnectorName:
name: connector_name
in: path
required: true
description: Uniquely identifies a SIPREC connector.
schema:
type: string
SiprecSid:
name: siprec_sid
in: path
required: true
description: The SiprecSid that uniquely identifies the Sip Recording.
schema:
type: string
Slug:
name: slug
in: path
required: true
description: The collection's slug (unique within your organization).
schema:
type: string
example: support-transcripts
Snapshot:
name: page[snapshot]
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
description: Required after page 1; account/filter-bound 15-minute stable snapshot; expired/mismatch 409.
Sort:
name: sort
in: query
description: Set the order of the results by the creation date.
required: false
schema:
type: string
enum:
- asc
- desc
example: desc
SortAddress:
name: sort
in: query
required: false
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n street_address:\
\ sorts the result by the\n street_address field in ascending order.\n \n\n \n -street_address:\
\ sorts the result by the\n street_address field in descending order.\n \n If not\
\ given, results are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- first_name
- last_name
- business_name
- street_address
example: street_address
default: created_at
SortApplication:
name: sort
in: query
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n friendly_name:\
\ sorts the result by the\n friendly_name field in ascending order.\n \n\n \n -friendly_name:\
\ sorts the result by the\n friendly_name field in descending order.\n \n If not\
\ given, results are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- friendly_name
- active
example: friendly_name
default: created_at
SortConnection:
name: sort
in: query
required: false
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n connection_name:\
\ sorts the result by the\n connection_name field in ascending order.\n \n\n \n -connection_name:\
\ sorts the result by the\n connection_name field in descending order.\n \n If not\
\ given, results are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- connection_name
- active
example: connection_name
default: created_at
SortDocumentsConsolidated:
name: sort
in: query
required: false
description: 'Consolidated sort parameter for documents (deepObject style). Originally: sort[]'
schema:
type: array
items:
type: string
enum:
- filename
- created_at
- updated_at
- -filename
- -created_at
- -updated_at
example:
- filename
description: Specifies the sort order for results. If you want to sort by a field in ascending order, include it as
a sort parameter. If you want to sort in descending order, prepend a `-` in front of the field name.
SortEmailBlocks:
name: sort
in: query
description: Sort field. Leading `-` = desc; only `created_at` is sortable. Default `-created_at`. `--` is an error.
schema:
type: string
default: -created_at
enum:
- created_at
- -created_at
SortOutboundVoiceProfile:
name: sort
in: query
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n name: sorts\
\ the result by the\n name field in ascending order.\n \n\n \n -name: sorts\
\ the result by the\n name field in descending order.\n \n "
schema:
type: string
enum:
- enabled
- -enabled
- created_at
- -created_at
- name
- -name
- service_plan
- -service_plan
- traffic_type
- -traffic_type
- usage_payment_method
- -usage_payment_method
default: -created_at
example: name
SortRequirementTypesConsolidated:
name: sort
in: query
required: false
description: 'Consolidated sort parameter for requirement types (deepObject style). Originally: sort[]'
schema:
type: array
items:
type: string
enum:
- name
- created_at
- updated_at
- -name
- -created_at
- -updated_at
example:
- name
description: Specifies the sort order for results. If you want to sort by a field in ascending order, include it as
a sort parameter. If you want to sort in descending order, prepend a `-` in front of the field name.
SortRequirementsConsolidated:
name: sort
in: query
required: false
description: 'Consolidated sort parameter for requirements (deepObject style). Originally: sort[]'
schema:
type: array
items:
type: string
enum:
- created_at
- updated_at
- country_code
- phone_number_type
- -created_at
- -updated_at
- -country_code
- -phone_number_type
example:
- country_code
description: Specifies the sort order for results. If you want to sort by a field in ascending order, include it as
a sort parameter. If you want to sort in descending order, prepend a `-` in front of the field name.
SortUserAddress:
name: sort
in: query
required: false
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n street_address:\
\ sorts the result by the\n street_address field in ascending order.\n \n\n \n -street_address:\
\ sorts the result by the\n street_address field in descending order.\n \n If not\
\ given, results are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- first_name
- last_name
- business_name
- street_address
example: street_address
default: created_at
SourceId:
name: sourceId
in: path
required: true
description: The identifier of the source to remove.
schema:
type: string
example: '42'
StartTime:
name: StartTime
in: query
required: false
description: Filters calls by their start date. Expected format is YYYY-MM-DD.
schema:
type: string
example: '2023-05-22'
StartTime_gt:
name: StartTime>
in: query
required: false
description: Filters calls by their start date (after). Expected format is YYYY-MM-DD
schema:
type: string
x-stainless-param: StartTime_gt
example: '2023-05-22'
StartTime_lt:
name: StartTime<
in: query
required: false
description: Filters calls by their start date (before). Expected format is YYYY-MM-DD
schema:
type: string
x-stainless-param: StartTime_lt
example: '2023-05-22'
Status:
name: Status
in: query
required: false
description: Filters calls by status.
schema:
type: string
enum:
- canceled
- completed
- failed
- busy
- no-answer
example: no-answer
StreamingSid:
description: Uniquely identifies the streaming by id.
name: streaming_sid
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
TemplateAutoescapeFilter:
name: filter[autoescape]
in: query
description: Exact match on the template's `autoescape` option. Only the exact query strings `true` and `false` are
accepted; other values, including blank, return 400.
required: false
schema:
type: string
enum:
- 'true'
- 'false'
TemplateContentTypeFilter:
name: filter[content_type]
in: query
description: Matches templates by stored body presence. `html_and_text` requires both an HTML and text body; `html_only`
requires HTML and no text body; `text_only` requires text and no HTML body; `no_body` requires neither. `null` and
exactly `""` count as absent; whitespace-only strings count as content. An empty or unsupported value returns a 400
response.
required: false
schema:
type: string
enum:
- html_and_text
- html_only
- text_only
- no_body
TemplateId:
name: id
in: path
required: true
description: Email template UUID.
schema:
type: string
format: uuid
TemplateQueryFilter:
name: filter[query]
in: query
description: Case-insensitive literal substring match over the template `name` or stored `subject` only; bodies are
never searched. `%`, `_`, and `\` are literal characters with no wildcard meaning. A blank value is treated as omitted.
required: false
schema:
type: string
example: welcome
TemplateStrictVariablesFilter:
name: filter[strict_variables]
in: query
description: Exact match on the template's `strict_variables` option. Only the exact query strings `true` and `false`
are accepted; other values, including blank, return 400.
required: false
schema:
type: string
enum:
- 'true'
- 'false'
TestDeviceId:
name: test_device_id
in: path
required: true
description: The Telnyx-assigned test device identifier.
schema:
type: string
format: uuid
TexmlDateCreated:
name: DateCreated
in: query
required: false
description: Filters recording by the creation date. Expected format is ISO8601 date or date-time, ie. {YYYY}-{MM}-{DD}
or {YYYY}-{MM}-{DD}T{hh}:{mm}:{ss}Z. Also accepts inequality operators, e.g. DateCreated>=2023-05-22.
schema:
type: string
format: date-time
example: '2023-05-22T00:00:00Z'
ThreadIdPathParam:
name: thread_id
in: path
required: true
description: Thread UUID.
schema:
type: string
format: uuid
To:
name: To
in: query
required: false
description: Filters calls by the to number.
schema:
type: string
example: '+1312345678'
ToTimestamp:
name: to
in: query
description: Inclusive ISO 8601 end timestamp. When `from` is provided without `to`, defaults to `from + 30 days`.
required: false
schema:
type: string
format: date-time
TrafficPolicyProfileId:
name: id
description: Identifies the traffic policy profile.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
UserBundleId:
required: true
schema:
title: User Bundle Id
type: string
format: uuid
example: ca1d2263-d1f1-43ac-ba53-248e7a4bb26a
description: User bundle's ID, this is used to identify the user bundle in the API.
name: user_bundle_id
in: path
description: Unique identifier of the user bundle.
Uuid:
name: uuid
in: path
required: true
description: The collection's unique identifier.
schema:
type: string
format: uuid
example: 6a09ccbd-8f9b-4c3a-9b0e-2f1d3c4b5a6e
VoiceSdkCallReportSort:
name: sort
in: query
description: Set the order of the results by creation date. `asc` and `created_at` sort oldest reports first; `desc`
and `-created_at` sort newest reports first. If not given, results are sorted by creation date in descending order.
required: false
schema:
type: string
enum:
- asc
- desc
- created_at
- -created_at
default: desc
example: -created_at
WabaId:
name: id
in: path
required: true
schema:
type: string
description: Whatsapp Business Account ID
WaitSeconds:
name: wait_seconds
in: query
required: false
description: Long-poll duration in seconds. The server holds the connection open for up to this many seconds, waiting
for new or updated results before returning an empty response. Set to 0 for an immediate response.
schema:
type: integer
minimum: 0
maximum: 25
default: 0
WebhookId:
name: id
in: path
required: true
description: Email webhook UUID
schema:
type: string
format: uuid
WhatsappCallingRoutingNumber:
name: id
in: path
required: true
schema:
type: string
description: The BYON phone number in E.164 format. The leading `+` is optional.
example: '+13125550100'
WhatsappHostedSignupId:
name: id
in: path
required: true
schema:
type: string
description: Hosted signup ID returned when the hosted signup was created
WhatsappPhoneNumber:
name: phone_number
in: path
required: true
schema:
type: string
description: Phone number (E.164 format)
WhatsappSignupSessionId:
name: id
in: path
required: true
schema:
type: string
description: Signup session ID
WhatsappTemplateId:
name: id
in: path
required: true
schema:
type: string
description: Whatsapp message template ID
WirelessBlocklistId:
name: id
description: Identifies the wireless blocklist.
in: path
required: true
schema:
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
address_id:
name: address_id
description: Identifies a civic address or a location.
in: path
required: true
schema:
format: uuid
type: string
example: 318fb664-d341-44d2-8405-e6bfb9ced6d9
ai-gateway-resources_IdempotencyKey:
name: Idempotency-Key
in: header
required: true
schema:
type: string
minLength: 1
maxLength: 128
pattern: ^[A-Za-z0-9_-]+$
description: 24h, scoped by account+method+path. Same key/body returns same outcome; changed body 409; in-progress 409
with Retry-After. Token-create replay returns 200 metadata WITHOUT secret.
ai-gateway-resources_PageNumber:
name: page[number]
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
description: ''
ai-gateway-resources_PageSize:
name: page[size]
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: ''
ai-gateway-spend_PageNumber:
name: page[number]
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
description: ''
ai-gateway-spend_PageSize:
name: page[size]
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 20
description: ''
audio_format:
name: audio_format
in: query
required: false
description: Audio output format override. Supported for Telnyx models. The `Ultra` model outputs PCM at 24kHz s16le
or MP3 at 128kbps 24kHz.
schema:
type: string
enum:
- pcm
- wav
- mp3
audit-logs_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[created_before], filter[created_after]'
schema:
type: object
properties:
created_before:
type: string
format: date-time
example: '2021-01-09T00:00:00Z'
description: Filter for audit events created before a specific date.
created_after:
type: string
format: date-time
example: '2021-01-09T00:00:00Z'
description: Filter for audit events created after a specific date.
audit-logs_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
example: 1
description: Page number to load.
size:
type: integer
example: 10
description: Number of items per page.
bundle-pricing_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Supports filtering by country_iso and resource. Examples:
filter[country_iso]=US or filter[resource]=+15617819942'
schema:
type: object
properties:
country_iso:
title: Filter[Country Iso]
type: array
items:
type: string
example: US
description: Filter by country code.
resource:
title: Filter[Resource]
type: array
items:
type: string
description: Filter by resource.
example: '+15617819942'
description: Filter by resource.
bundle-pricing_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
call-control_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[application_name][contains], filter[outbound.outbound_voice_profile_id],
filter[leg_id], filter[application_session_id], filter[connection_id], filter[product], filter[failed], filter[from],
filter[to], filter[name], filter[type], filter[occurred_at][eq/gt/gte/lt/lte], filter[status]'
schema:
type: object
properties:
application_name:
type: object
description: Application name filters
properties:
contains:
type: string
default: 'null'
description: If present, applications with application_name containing the given value will be
returned. Matching is not case-sensitive. Requires at least three characters.
additionalProperties: false
outbound.outbound_voice_profile_id:
type: string
example: '1293384261075731499'
description: Identifies the associated outbound voice profile.
x-format: int64
leg_id:
type: string
format: uuid
description: The unique identifier of an individual call leg.
application_session_id:
type: string
format: uuid
description: The unique identifier of the call session. A session may include multiple call leg events.
connection_id:
type: string
description: The unique identifier of the conection.
product:
type: string
enum:
- call_control
- fax
- texml
example: texml
description: Filter by product.
failed:
type: boolean
example: false
description: Delivery failed or not.
from:
type: string
example: '+12025550142'
description: Filter by From number.
to:
type: string
example: '+12025550142'
description: Filter by To number.
name:
type: string
description: If present, conferences will be filtered to those with a matching `name` attribute. Matching is case-sensitive
type:
type: string
enum:
- command
- webhook
example: webhook
description: Event type
occurred_at:
type: object
description: Event occurred_at filters
properties:
eq:
type: string
example: '2019-03-29T11:10:00Z'
description: 'Event occurred_at: equal'
gt:
type: string
example: '2019-03-29T11:10:00Z'
description: 'Event occurred_at: greater than'
gte:
type: string
example: '2019-03-29T11:10:00Z'
description: 'Event occurred_at: greater than or equal'
lt:
type: string
example: '2019-03-29T11:10:00Z'
description: 'Event occurred_at: lower than'
lte:
type: string
example: '2019-03-29T11:10:00Z'
description: 'Event occurred_at: lower than or equal'
additionalProperties: false
status:
type: string
enum:
- init
- in_progress
- completed
description: If present, conferences will be filtered by status.
call-control_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[after], page[before], page[limit], page[size],
page[number]'
schema:
type: object
properties:
after:
type: string
default: 'null'
description: Opaque identifier of next page
before:
type: string
default: 'null'
description: Opaque identifier of previous page
limit:
type: integer
minimum: 1
maximum: 250
default: 20
description: Limit of records per single page
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
call-recordings_ConnectionId:
name: connection_id
description: Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource.
in: path
required: true
schema:
type: string
call-recordings_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
call-scripting_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[outbound_voice_profile_id], filter[friendly_name]'
schema:
type: object
properties:
outbound_voice_profile_id:
type: string
example: '1293384261075731499'
description: Identifies the associated outbound voice profile.
friendly_name:
type: string
default: 'null'
description: If present, applications with friendly_name containing the given value will be returned.
Matching is not case-sensitive. Requires at least three characters.
call-scripting_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 250
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
calls_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
calls_Page:
name: Page
in: query
required: false
description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.
schema:
type: integer
example: '1'
calls_PageSize:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: '10'
collections_PageSize:
name: page[size]
in: query
required: false
description: Number of results per page. Defaults to 20.
schema:
type: integer
minimum: 1
maximum: 100
default: 20
example: 20
conference-participants_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
conferences_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
conferences_Page:
name: Page
in: query
required: false
description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.
schema:
type: integer
example: '1'
conferences_PageSize:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: '10'
connections_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[connection_name], filter[fqdn], filter[outbound_voice_profile_id],
filter[outbound.outbound_voice_profile_id]'
schema:
type: object
properties:
connection_name:
type: object
description: Filter by connection_name using nested operations
properties:
contains:
type: string
default: null
description: If present, connections with connection_name containing the given value will be
returned. Matching is not case-sensitive. Requires at least three characters.
fqdn:
type: string
default: null
description: If present, connections with an `fqdn` that equals the given value will be returned. Matching is
case-sensitive, and the full string must match.
outbound_voice_profile_id:
type: string
example: '1293384261075731499'
description: Identifies the associated outbound voice profile.
x-format: int64
connections_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 250
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
connections_SortConnection:
name: sort
in: query
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n connection_name:\
\ sorts the result by the\n connection_name field in ascending order.\n \n\n \n -connection_name:\
\ sorts the result by the\n connection_name field in descending order.\n \n If not\
\ given, results are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- connection_name
- active
example: connection_name
default: created_at
connections_id:
name: id
description: Identifies the resource.
in: path
required: true
schema:
type: string
example: '1293384261075731499'
x-format: int64
customer_service_record_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[phone_number][eq], filter[phone_number][in][],
filter[status][eq], filter[status][in][], filter[created_at][lt], filter[created_at][gt]'
schema:
type: object
properties:
phone_number:
type: object
properties:
eq:
type: string
example: '+12441239999'
description: Filters records to those with a specified number.
in:
type: array
items:
type: string
example: '+12441239999'
description: Filters records to those with at least one number in the list.
status:
type: object
properties:
eq:
type: string
enum:
- pending
- completed
- failed
example: pending
description: Filters records to those with a specific status.
in:
type: array
items:
type: string
enum:
- pending
- completed
- failed
example: pending
description: Filters records to those with a least one status in the list.
created_at:
type: object
properties:
lt:
type: string
format: date-time
example: '2020-01-01T00:00:00Z'
description: Filters records to those created before a specific date.
gt:
type: string
format: date-time
example: '2020-01-01T00:00:00Z'
description: Filters records to those created after a specific date.
customer_service_record_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
disable_cache:
name: disable_cache
in: query
required: false
description: When `true`, bypass the audio cache and generate fresh audio.
schema:
type: boolean
default: false
documents_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
email_PageNumber:
name: page[number]
in: query
required: false
description: Page number to return (offset pagination)
schema:
type: integer
minimum: 1
default: 1
email_PageSize:
name: page_size
in: query
description: Number of results to return. Defaults to 25; maximum is 100. Invalid values are clamped to the valid range.
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 25
emergency_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
endpointing:
name: endpointing
in: query
required: false
description: Silence duration (in milliseconds) that triggers end-of-speech detection. When set, the engine uses this
value to determine when a speaker has stopped talking. Supported by `xAI`, `Deepgram`, `Google`, `Speechmatics` (`speechmatics/standard`
only; `speechmatics/linden-1` uses fixed service-side voice activity detection and ignores it), and `Soniox`. `Soniox`
accepts values between 500 and 3000. Other engines may not support this parameter.
schema:
type: integer
example: 500
external-voice-integrations_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 250
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
external-voice-integrations_id:
name: id
description: Identifies the resource.
in: path
required: true
schema:
type: string
example: '1293384261075731499'
x-format: int64
id:
name: id
description: Identifies the resource.
in: path
required: true
schema:
type: string
example: '1293384261075731499'
input_format:
name: input_format
in: query
required: true
description: The format of input audio stream.
schema:
type: string
enum:
- mp3
- wav
- linear16
- linear32
example: mp3
interim_results:
name: interim_results
in: query
required: false
description: Whether to receive interim transcription results.
schema:
type: boolean
example: true
keyterm:
name: keyterm
in: query
required: false
description: A key term to boost in the transcription. The engine will be more likely to recognize this term. Can be
specified multiple times for multiple terms.
schema:
type: string
example: Telnyx
keywords:
name: keywords
in: query
required: false
description: Comma-separated list of keywords to boost in the transcription. The engine will prioritize recognition
of these words.
schema:
type: string
example: Telnyx,SIP,WebRTC
language:
name: language
in: query
required: false
description: The language spoken in the audio stream. For `cohere/ar-stt`, this must be `ar` or `en` — unlike other
engines, Cohere does not auto-detect the language, and rejects unsupported values including `auto`; omitting it defaults
to `ar`. For `speechmatics/linden-1`, omitting it defaults to `en`; `auto`, `auto_beta`, `multi`, or a language outside
its supported list is rejected when the connection is established. `speechmatics/linden-1` also accepts `en-US`, `en-GB`,
`en-AU`, `cmn-Hans`, and `cmn-Hant`, which select the spelling or script variant (`en` alone uses the default spelling).
schema:
type: string
example: en-US
legacy_published_texml_siprec_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
managed-accounts_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[email][contains], filter[email][eq],
filter[organization_name][contains], filter[organization_name][eq], filter[status][eq]'
schema:
type: object
additionalProperties: false
properties:
email:
type: object
additionalProperties: false
properties:
contains:
type: string
description: If present, email containing the given value will be returned. Matching is not case-sensitive.
Requires at least three characters.
eq:
type: string
description: If present, only returns results with the email matching exactly the value given.
organization_name:
type: object
additionalProperties: false
properties:
contains:
type: string
description: If present, only returns results with the organization_name containing the given
value. Matching is not case-sensitive. Requires at least three characters.
eq:
type: string
description: If present, only returns results with the organization_name matching exactly the
value given.
status:
type: object
additionalProperties: false
properties:
eq:
type: string
enum:
- all
- active
- enabled
- cancelled
- disabled
- blocked
example: enabled
description: If present, only returns managed accounts with the status matching exactly the value
given. Use enabled or disabled to filter accounts by whether they are currently
able to use Telnyx services.
example:
email:
contains: john
organization_name:
eq: Example Company LLC
managed-accounts_Sort:
name: sort
in: query
required: false
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n email: sorts\
\ the result by the\n email field in ascending order.\n \n\n \n -email:\
\ sorts the result by the\n email field in descending order.\n \n If not given, results\
\ are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- email
example: email
default: created_at
media-streaming_ConnectionId:
name: connection_id
description: Uniquely identifies a Telnyx application (Call Control).
in: path
required: true
schema:
type: string
model:
name: model
in: query
description: The specific model to use within the selected transcription engine.
schema:
oneOf:
- $ref: '#/components/schemas/azure_models'
- $ref: '#/components/schemas/deepgram_models'
- $ref: '#/components/schemas/google_models'
- $ref: '#/components/schemas/telnyx_models'
- $ref: '#/components/schemas/xai_models'
- $ref: '#/components/schemas/speechmatics_models'
- $ref: '#/components/schemas/soniox_models'
- $ref: '#/components/schemas/parakeet_models'
- $ref: '#/components/schemas/humain_models'
- $ref: '#/components/schemas/reson8_models'
- $ref: '#/components/schemas/cohere_ar_stt_models'
model_id:
name: model_id
in: query
required: false
description: 'Model identifier for the chosen provider. Examples: `Ultra`, `KokoroTTS` (Telnyx); `Polly.Generative`
(AWS).'
schema:
type: string
notifications_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
required: false
description: 'Consolidated filter parameter (deepObject style). Originally: filter[associated_record_type][eq], filter[channel_type_id][eq],
filter[notification_profile_id][eq], filter[notification_channel][eq], filter[notification_event_condition_id][eq],
filter[status][eq]'
schema:
type: object
properties:
associated_record_type:
type: object
properties:
eq:
type: string
enum:
- account
- phone_number
example: phone_number
description: Filter by the associated record type
channel_type_id:
type: object
properties:
eq:
type: string
enum:
- webhook
- sms
- email
- voice
example: webhook
description: Filter by the id of a channel type
notification_profile_id:
type: object
properties:
eq:
type: string
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
description: Filter by the id of a notification profile
notification_channel:
type: object
properties:
eq:
type: string
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
description: Filter by the id of a notification channel
notification_event_condition_id:
type: object
properties:
eq:
type: string
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
description: Filter by the id of a notification channel
status:
type: object
properties:
eq:
type: string
enum:
- enabled
- enable-received
- enable-pending
- enable-submtited
- delete-received
- delete-pending
- delete-submitted
- deleted
example: enable-received
description: The status of a notification setting
notifications_Id:
name: id
in: path
description: The id of the resource.
required: true
schema:
type: string
format: uuid
numbers_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
numbers_PageConsolidated_73c9788e53:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
outbound-voice-profiles_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[name][contains]'
schema:
type: object
properties:
name:
type: object
properties:
contains:
type: string
example: office-profile
description: Optional filter on outbound voice profile name.
description: Name filtering operations
outbound-voice-profiles_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
phone_number_id:
name: phone_number_id
description: A phone number's ID via the Telnyx API
in: path
required: true
schema:
type: string
example: '1234567889'
porting-order_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[porting_order_id], filter[support_key],
filter[status], filter[phone_number], filter[activation_status], filter[portability_status]'
schema:
type: object
properties:
porting_order_id:
type: array
items:
type: string
format: uuid
example: f3575e15-32ce-400e-a4c0-dd78800c20b0
description: Filter results by a list of porting order ids
support_key:
oneOf:
- type: string
example: sr_a12345
description: Filter by exact support key match (eq operation)
- type: array
items:
type: string
example: sr_a12345
description: Filter by multiple support keys (in operation)
description: 'Filter results by support key(s). Originally: filter[support_key][eq], filter[support_key][in][]'
status:
oneOf:
- type: string
enum:
- draft
- in-process
- submitted
- exception
- foc-date-confirmed
- cancel-pending
- ported
- cancelled
example: in-process
description: Filter by single status
- type: array
items:
type: string
enum:
- draft
- in-process
- submitted
- exception
- foc-date-confirmed
- cancel-pending
- ported
- cancelled
example:
- in-process
- submitted
description: Filter by multiple statuses (in operation)
description: 'Filter porting orders by status(es). Originally: filter[status], filter[status][in][]'
phone_number:
type: array
items:
type: string
example: '+12003151212'
description: Filter results by a list of phone numbers
activation_status:
$ref: '#/components/schemas/PortingOrderActivationStatus'
description: Filter results by activation status
portability_status:
$ref: '#/components/schemas/PortabilityStatus'
description: Filter results by portability status
porting-order_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
programmable-fax_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[application_name][contains], filter[outbound_voice_profile_id]'
schema:
type: object
properties:
application_name:
type: object
properties:
contains:
type: string
example: fax-app
description: If present, applications with application_name containing the given value will be
returned. Matching is not case-sensitive. Requires at least three characters.
description: Application name filtering operations
outbound_voice_profile_id:
type: string
example: '1293384261075731499'
description: Identifies the associated outbound voice profile.
programmable-fax_SortApplication:
name: sort
in: query
description: "Specifies the sort order for results. By default sorting direction is ascending. To have the results sorted\
\ in descending order add the - prefix. \nThat is: \n \n application_name:\
\ sorts the result by the\n application_name field in ascending order.\n \n\n \n -application_name:\
\ sorts the result by the\n application_name field in descending order.\n \n If not\
\ given, results are sorted by created_at in descending order."
schema:
type: string
enum:
- created_at
- application_name
- active
example: application_name
default: created_at
pronunciation_dict_id:
name: id
in: path
required: true
description: The UUID of the pronunciation dictionary.
schema:
type: string
format: uuid
example: c215a3e1-be41-4701-97e8-1d3c22f9a5b7
provider:
name: provider
in: query
required: false
description: TTS provider. Defaults to `telnyx` if not specified. Ignored when `voice` is provided.
schema:
type: string
enum:
- aws
- telnyx
- azure
- elevenlabs
- minimax
- resemble
- xai
- humain
- soniox
default: telnyx
push-notifications_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
queues_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
queues_Page:
name: Page
in: query
required: false
description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.
schema:
type: integer
example: '1'
queues_PageSize:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: '10'
rcs-registration_IdempotencyKey:
name: Idempotency-Key
in: header
required: true
description: A caller-generated key containing letters, numbers, underscores, or hyphens. Reuse the same key and request
body when retrying the same logical agent creation.
schema:
type: string
minLength: 1
maxLength: 255
pattern: ^[A-Za-z0-9_-]+$
recordings_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
recordings_Page:
name: Page
in: query
required: false
description: The number of the page to be displayed, zero-indexed, should be used in conjuction with PageToken.
schema:
type: integer
example: '1'
recordings_PageSizeTexml:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: '10'
redact:
name: redact
in: query
required: false
description: Enable redaction of sensitive information (e.g., PCI data, SSN) from transcription results. Supported values
depend on the transcription engine.
schema:
type: string
example: pci
release_id:
name: release_id
description: Identifies a Release request
in: path
required: true
schema:
format: uuid
type: string
example: 7b6a6449-b055-45a6-81f6-f6f0dffa4cc6
sample_rate:
name: sample_rate
in: query
required: false
description: Audio sample rate in Hz. Required when `input_format` is a raw encoding (`linear16`, `linear32`) — those
formats carry no header metadata. Ignored for container formats (`mp3`, `wav`), which self-describe their rate. `speechmatics/linden-1`
accepts only `16000`.
schema:
type: integer
example: 16000
socket_id:
name: socket_id
in: query
required: false
description: Client-provided socket identifier for tracking. If not provided, one is generated server-side.
schema:
type: string
streams_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
telephony-credentials_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[tag], filter[name], filter[status],
filter[resource_id], filter[sip_username]'
schema:
type: object
properties:
tag:
type: string
description: Filter by tag
name:
type: string
description: Filter by name
status:
type: string
description: Filter by status
resource_id:
type: string
description: Filter by resource_id
sip_username:
type: string
description: Filter by sip_username
telephony-credentials_IdempotencyKey:
description: 'Unique key for safely retrying the same logical request. Generate a UUID v4 for each operation and reuse
it only when retrying that operation with the same request body. Valid characters: A-Z, a-z, 0-9, -, and _. Length:
1-255 characters. Do not include sensitive data in the key.'
in: header
name: Idempotency-Key
required: false
example: 8e03978e-40d5-43e8-bc93-6894a57f9326
schema:
type: string
minLength: 1
maxLength: 255
pattern: ^[A-Za-z0-9_-]{1,255}$
telephony-credentials_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
minimum: 1
default: 1
description: The page number to load
size:
type: integer
minimum: 1
maximum: 250
default: 50
description: The size of the page
ticket_id:
name: ticket_id
description: Identifies an Upload request
in: path
required: true
schema:
format: uuid
type: string
example: 7b6a6449-b055-45a6-81f6-f6f0dffa4cc6
transcription_engine:
name: transcription_engine
in: query
required: true
description: The transcription engine to use for processing the audio stream.
schema:
type: string
enum:
- Azure
- Deepgram
- Google
- Telnyx
- xAI
- Speechmatics
- Soniox
- Parakeet
- Humain
- Reson8
- Cohere
example: Telnyx
transcriptions_AccountSid:
name: account_sid
in: path
required: true
description: The id of the account the resource belongs to.
schema:
type: string
transcriptions_PageSize:
name: PageSize
in: query
required: false
description: The number of records to be displayed on a page
schema:
type: integer
example: '10'
user-addresses_FilterConsolidated:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains],
filter[street_address][contains]'
schema:
type: object
properties:
customer_reference:
type: object
description: Filter user addresses via the customer reference. Supports both exact matching (eq) and partial matching
(contains). Matching is not case-sensitive.
properties:
eq:
type: string
description: Filter user addresses via exact customer reference match. Matching is not case-sensitive.
contains:
type: string
description: If present, user addresses with customer_reference containing the given value will
be returned. Matching is not case-sensitive.
street_address:
type: object
description: Filter user addresses via street address. Supports partial matching (contains). Matching is not case-sensitive.
properties:
contains:
type: string
description: If present, user addresses with street_address containing the given value will be
returned. Matching is not case-sensitive. Requires at least three characters.
examples:
customer_reference_eq:
summary: Filter by exact customer reference
description: Find user addresses with exact customer reference match
value:
customer_reference:
eq: MY REF 001
customer_reference_contains:
summary: Filter by partial customer reference
description: Find user addresses containing part of customer reference
value:
customer_reference:
contains: REF
street_address_contains:
summary: Filter by street address
description: Find user addresses containing part of street address
value:
street_address:
contains: Congress
combined_filters:
summary: Combined filters
description: Use multiple filters together
value:
customer_reference:
contains: REF
street_address:
contains: Avenue
user-addresses_FilterConsolidated_26a215df92:
name: filter
in: query
style: deepObject
explode: true
description: 'Consolidated filter parameter (deepObject style). Originally: filter[customer_reference][eq], filter[customer_reference][contains],
filter[street_address][contains]'
schema:
type: object
properties:
customer_reference:
type: object
description: Filter user addresses via the customer reference. Supports both exact matching (eq) and partial matching
(contains). Matching is not case-sensitive.
properties:
eq:
type: string
description: Filter user addresses via exact customer reference match. Matching is not case-sensitive.
contains:
type: string
description: If present, user addresses with customer_reference containing the given value will
be returned. Matching is not case-sensitive.
street_address:
type: object
description: Filter user addresses via street address. Supports partial matching (contains). Matching is not case-sensitive.
properties:
contains:
type: string
description: If present, user addresses with street_address containing the given value will be
returned. Matching is not case-sensitive. Requires at least three characters.
examples:
customer_reference_eq:
summary: Filter by exact customer reference
description: Find user addresses with exact customer reference match
value:
customer_reference:
eq: MY REF 001
customer_reference_contains:
summary: Filter by partial customer reference
description: Find user addresses containing part of customer reference
value:
customer_reference:
contains: REF
street_address_contains:
summary: Filter by street address
description: Find user addresses containing part of street address
value:
street_address:
contains: Congress
combined_filters:
summary: Combined filters
description: Use multiple filters together
value:
customer_reference:
contains: REF
street_address:
contains: Avenue
user-addresses_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
user-addresses_PageConsolidated_26a215df92:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
users_PageNumber:
name: page[number]
in: query
description: The page number to load
schema:
type: integer
minimum: 1
default: 1
users_PageSize:
name: page[size]
in: query
description: The size of the page
schema:
type: integer
minimum: 1
maximum: 250
default: 250
video_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
voice:
name: voice
in: query
required: false
description: Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id` (e.g. `Telnyx.Ultra.`,
`Telnyx.Bayan.Ahmed`, `Telnyx.Sukhan.urdu-professor`, or `azure.en-US-AvaMultilingualNeural`). When provided, the
`provider`, `model_id`, and `voice_id` are extracted automatically. Takes precedence over individual `provider`/`model_id`/`voice_id`
parameters.
schema:
type: string
voice-channels_PageConsolidated:
name: page
in: query
style: deepObject
explode: true
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
schema:
type: object
properties:
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page
number:
type: integer
minimum: 1
default: 1
description: The page number to load
voice-designs_PageNumber:
name: page[number]
in: query
required: false
description: Page number for pagination (1-based).
schema:
type: integer
minimum: 1
default: 1
voice-designs_PageSize:
name: page[size]
in: query
required: false
description: Number of results per page.
schema:
type: integer
minimum: 1
maximum: 250
default: 20
voice-designs_Sort:
name: sort
in: query
required: false
description: Sort order. Prefix with `-` for descending. Defaults to `-created_at`.
schema:
type: string
enum:
- name
- -name
- created_at
- -created_at
default: -created_at
voice-sdk-debug_PageConsolidated:
name: page
in: query
description: Consolidated page parameter (deepObject style).
required: false
style: deepObject
explode: true
schema:
type: object
properties:
number:
type: integer
minimum: 1
default: 1
example: 1
size:
type: integer
minimum: 1
default: 20
example: 20
maximum: 100
description: Number of reports per page. Maximum 100.
voice_id:
name: voice_id
in: query
required: false
description: Voice identifier for the chosen provider.
schema:
type: string
wireless_PageConsolidated:
name: page
in: query
explode: true
description: 'Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
wireless_PageConsolidated_c5290d5308:
name: page
in: query
explode: true
description: 'Consolidated pagination parameter (deepObject style). Originally: page[number], page[size]'
schema:
type: object
properties:
number:
type: integer
minimum: 1
default: 1
description: The page number to load.
size:
type: integer
minimum: 1
maximum: 250
default: 20
description: The size of the page.
wireless_PageNumber:
name: page[number]
in: query
description: The page number to load.
schema:
type: integer
minimum: 1
default: 1
wireless_PageNumber_c5290d5308:
name: page[number]
in: query
description: The page number to load.
schema:
type: integer
minimum: 1
default: 1
wireless_PageSize:
name: page[size]
in: query
description: The size of the page.
schema:
type: integer
minimum: 1
maximum: 250
default: 20
wireless_PageSize_c5290d5308:
name: page[size]
in: query
description: The size of the page.
schema:
type: integer
minimum: 1
maximum: 250
default: 20
x402-transactions_PageNumber:
name: page[number]
in: query
required: false
description: The page number to load.
schema:
type: integer
minimum: 1
default: 1
x402-transactions_PageSize:
name: page[size]
in: query
required: false
description: The size of the page.
schema:
type: integer
minimum: 1
maximum: 250
default: 100
requestBodies:
CreateCredentialsRequest:
description: Creates new credentials resource for the specified connection_id.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomStorageConfiguration'
CreateCustomerServiceRecord:
required: true
content:
application/json:
schema:
type: object
required:
- phone_number
properties:
phone_number:
type: string
description: A valid US phone number in E164 format.
example: '+13035553000'
pattern: ^\+1\d{10}$
webhook_url:
type: string
description: Callback URL to receive webhook notifications.
example: https://example.com/webhook
additional_data:
$ref: '#/components/schemas/CustomerServiceRecordAdditionalData'
CreatePortingAdditionalDocuments:
description: A list of additional document parameters
required: true
content:
application/json:
schema:
type: object
properties:
additional_documents:
type: array
maxItems: 100
items:
type: object
properties:
document_type:
type: string
description: The type of document being created.
enum:
- loa
- invoice
- csr
- other
document_id:
type: string
description: The document identification
format: uuid
example:
additional_documents:
- document_id: 22771a52-c43a-4539-80db-9dd9ec36e237
document_type: loa
- document_id: d91474e6-4ebc-4ec1-b379-c596eeb405d6
document_type: invoice
CreatePortingAssociatedPhoneNumber:
required: true
content:
application/json:
schema:
type: object
required:
- phone_number_range
- action
properties:
phone_number_range:
type: object
properties:
start_at:
type: string
description: Specifies the start of the phone number range for this associated phone number.
pattern: ^\+\d{7,15}$
example: '+441234567890'
end_at:
type: string
description: Specifies the end of the phone number range for this associated phone number.
pattern: ^\+\d{7,15}$
example: '+441234567899'
action:
type: string
description: Specifies the action to take with this phone number during partial porting.
enum:
- keep
- disconnect
example: keep
CreatePortingLOAConfiguration:
required: true
content:
application/json:
schema:
type: object
description: The parameters for creating a new LOA configuration.
required:
- name
- logo
- company_name
- address
- contact
properties:
name:
type: string
description: The name of the LOA configuration
example: My LOA Configuration
logo:
type: object
description: The logo of the LOA configuration
required:
- document_id
properties:
document_id:
type: string
description: The document identification
format: uuid
company_name:
type: string
description: The name of the company
example: Telnyx
address:
type: object
description: The address of the company.
required:
- street_address
- city
- state
- zip_code
- country_code
properties:
street_address:
type: string
description: The street address of the company
example: 600 Congress Avenue
extended_address:
type: string
description: The extended address of the company
example: 14th Floor
city:
type: string
description: The locality of the company
example: Austin
state:
type: string
description: The administrative area of the company
example: TX
pattern: ^[A-Z]{2}$
zip_code:
type: string
description: The postal code of the company
example: '78701'
pattern: ^[0-9]{5}(?:-[0-9]{4})?$
country_code:
type: string
description: The country code of the company
example: US
pattern: ^[A-Z]{2}$
contact:
type: object
description: The contact information of the company.
required:
- email
- phone_number
properties:
email:
type: string
description: The email address of the contact
example: testing@telnyx.com
phone_number:
type: string
description: The phone number of the contact
example: '+12003270001'
pattern: ^\+\d{11,15}$
CreatePortingPhoneNumberBlock:
required: true
content:
application/json:
schema:
type: object
required:
- phone_number_range
- activation_ranges
properties:
phone_number_range:
type: object
required:
- start_at
- end_at
properties:
start_at:
type: string
description: Specifies the start of the phone number range for this porting phone number block.
pattern: ^\+\d{7,15}$
example: '+4930244999901'
end_at:
type: string
description: Specifies the end of the phone number range for this porting phone number block.
pattern: ^\+\d{7,15}$
example: '+4930244999910'
activation_ranges:
description: Specifies the activation ranges for this porting phone number block. The activation range must
be within the block range and should not overlap with other activation ranges.
type: array
items:
type: object
required:
- start_at
- end_at
properties:
start_at:
type: string
description: Specifies the start of the activation range. Must be greater or equal the start of the
extension range.
pattern: ^\+\d{7,15}$
example: '+4930244999901'
end_at:
type: string
description: Specifies the end of the activation range. It must be no more than the end of the extension
range.
pattern: ^\+\d{7,15}$
example: '+4930244999910'
CreatePortingPhoneNumberConfigurations:
description: A list of phone number configuration parameters
required: true
content:
application/json:
schema:
type: object
properties:
phone_number_configurations:
type: array
maxItems: 20
items:
type: object
required:
- porting_phone_number_id
- user_bundle_id
properties:
porting_phone_number_id:
type: string
format: uuid
description: Identifies the porting phone number to be configured.
example: 927f4687-318c-44bc-9f2f-22a5898143a4
user_bundle_id:
type: string
format: uuid
description: Identifies the user bundle to be associated with the porting phone number.
example: ff901545-3e27-462a-ba9d-2b34654cab82
CreatePortingPhoneNumberExtension:
required: true
content:
application/json:
schema:
type: object
required:
- porting_phone_number_id
- extension_range
- activation_ranges
properties:
porting_phone_number_id:
type: string
description: Identifies the porting phone number associated with this porting phone number extension.
format: uuid
example: f24151b6-3389-41d3-8747-7dd8c681e5e2
extension_range:
type: object
required:
- start_at
- end_at
properties:
start_at:
type: integer
description: Specifies the start of the extension range for this porting phone number extension.
example: 1
end_at:
type: integer
description: Specifies the end of the extension range for this porting phone number extension.
example: 10
activation_ranges:
description: Specifies the activation ranges for this porting phone number extension. The activation range
must be within the extension range and should not overlap with other activation ranges.
type: array
items:
type: object
required:
- start_at
- end_at
properties:
start_at:
description: Specifies the start of the activation range. Must be greater or equal the start of the
extension range.
type: integer
example: 1
end_at:
description: Specifies the end of the activation range. It must be no more than the end of the extension
range.
type: integer
example: 10
CreatePortingReport:
required: true
content:
application/json:
schema:
type: object
description: The parameters for generating a new porting related report.
required:
- report_type
- params
properties:
report_type:
type: string
description: Identifies the type of report
enum:
- export_porting_orders_csv
example: export_porting_orders_csv
params:
oneOf:
- $ref: '#/components/schemas/ExportPortingOrdersCSVReport'
CreatePortoutReport:
required: true
content:
application/json:
schema:
type: object
description: The parameters for generating a new port-out related report.
required:
- report_type
- params
properties:
report_type:
type: string
description: Identifies the type of report
enum:
- export_portouts_csv
example: export_portouts_csv
params:
oneOf:
- $ref: '#/components/schemas/ExportPortoutsCSVReport'
DeleteRecordingsRequest:
description: Deletes recordings for the given list of IDs.
required: true
content:
application/json:
schema:
type: object
required:
- ids
properties:
ids:
type: array
description: List of call recording IDs to delete.
items:
type: string
example:
ids:
- 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
- 428c31b6-7af4-4bcb-b7f5-5013ef9657c2
DialogflowConnectionRequest:
description: The params expected to create/update a Dialogflow Connection for given connection_id.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DialogflowConnection'
InitiatePortingActionRequirement:
description: Parameters for initiating the action requirement
required: true
content:
application/json:
schema:
type: object
required:
- params
properties:
params:
oneOf:
- $ref: '#/components/schemas/AUIdVerificationParams'
SendPortingVerificationCodes:
description: A list of phone numbers to send the verification codes to and the method to send them by
required: false
content:
application/json:
schema:
type: object
properties:
phone_numbers:
type: array
maxItems: 100
items:
type: string
verification_method:
type: string
enum:
- sms
- call
example:
phone_numbers:
- '+61424000001'
- '+61424000002'
verification_method: sms
SharePortingOrder:
required: true
content:
application/json:
schema:
type: object
properties:
expires_in_seconds:
description: The number of seconds the token will be valid for
type: integer
minimum: 1
maximum: 172800
permissions:
description: The permissions the token will have
type: string
enum:
- porting_order.document.read
- porting_order.document.update
example:
expires_in_seconds: 3600
permissions: porting_order.document.read
SiprecConnectorRequest:
description: The parameters required to create or update a SIPREC connector.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SiprecConnector'
TexmlCreateCallRecordingRequest:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCreateCallRecordingRequestBody'
description: Starts call recording on a call.
TexmlCreateCallStreamingRequest:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCreateCallStreamingRequestBody'
description: Start streaming media from a call
TexmlCreateSiprecSessionRequest:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCreateSiprecSessionRequestBody'
description: Starts a SIPREC session.
TexmlUpdateCallRecordingRequest:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlUpdateCallRecordingRequestBody'
description: Update call recording on a call.
TexmlUpdateCallStreamingRequest:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlUpdateCallStreamingRequestBody'
description: Update streaming
TexmlUpdateSiprecSessionRequest:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlUpdateSiprecSessionRequestBody'
description: Updates a SIPREC session.
UpdatePortingOrdersActivationJob:
required: true
content:
application/json:
schema:
type: object
properties:
activate_at:
type: string
format: date-time
example: '2019-01-01T00:00:00Z'
description: The desired activation time. The activation time should be between any of the activation windows.
VerifyCustomerServiceRecordPhoneNumberCoverage:
required: true
content:
application/json:
schema:
type: object
required:
- phone_numbers
properties:
phone_numbers:
type: array
description: The phone numbers list to be verified.
items:
type: string
description: A valid US phone number in E164 format.
example: '+13035553000'
pattern: ^\+1\d{10}$
VerifyPortingVerificationCodes:
description: A list of phone numbers and their verification codes
required: true
content:
application/json:
schema:
type: object
properties:
verification_codes:
type: array
maxItems: 100
items:
type: object
properties:
phone_number:
type: string
code:
type: string
example:
verification_codes:
- phone_number: '+61424000001'
code: '12345'
- phone_number: '+61424000002'
code: '54321'
responses:
10dlc_GenericErrorResponse:
description: Generic response error
content:
application/json:
schema:
$ref: '#/components/schemas/10dlc_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
10dlc_GenericErrorResponse_ca4eb0ad6f:
description: Generic response error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: string
title: string
detail: string
source:
pointer: string
parameter: string
AdvancedOrderResponse:
description: An Advanced Order Response
content:
application/json:
schema:
$ref: '#/components/schemas/AdvancedOrder'
AuditLogsGenericErrorResponse:
description: Unexpected error.
content:
application/json:
schema:
$ref: '#/components/schemas/AuditLogsErrors'
AvatarMutationBadRequestResponse:
description: The avatar identifier is malformed, or the operation targets a Telnyx stock avatar, which is read-only.
content:
application/json:
schema:
$ref: '#/components/schemas/AvatarErrorResponse'
example:
errors:
- code: '10015'
title: Bad Request
detail: Telnyx stock avatars cannot be modified.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
AvatarNotFoundResponse:
description: The avatar does not exist or is not available to the authenticated organization.
content:
application/json:
schema:
$ref: '#/components/schemas/AvatarErrorResponse'
example:
errors:
- code: '10005'
title: Resource not found
detail: Avatar avatar_0123456789abcdef0123456789abcdef does not exist.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
AvatarRequestValidationErrorResponse:
description: The request body, path parameter, or query parameter failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/AvatarErrorResponse'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request contains invalid avatar parameters.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
AvatarServiceUnavailableResponse:
description: Avatar storage is temporarily unavailable. Retry the operation.
content:
application/json:
schema:
$ref: '#/components/schemas/AvatarErrorResponse'
example:
errors:
- code: '10037'
title: Service unavailable
detail: Avatar storage is temporarily unavailable. Try again.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10037
AvatarValidationErrorResponse:
description: The request, uploaded image, or organization quota failed validation. Uploaded images must not exceed 10
MiB.
content:
application/json:
schema:
$ref: '#/components/schemas/AvatarErrorResponse'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The image must be between 256 and 8192 pixels on each side.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10027
BadRequest:
description: Invalid request — validation error or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: validation_error
message: 'invalid request: policy.allowed_domains must have at least 1 item(s)'
retryable: false
BadRequestErrorResponse:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
BadRequestResponse:
description: 'Bad request. The request was invalid or cannot be served. Common causes include: audio file download failures,
attempting to delete non-empty queues, invalid characters in the request, or character encoding errors.'
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
examples:
audio_file_download_failed:
summary: Audio file download failed
value:
errors:
- code: '90040'
title: Downloading audio file failed
detail: Provided audio file couldn't be downloaded.
queue_not_empty:
summary: Queue not empty
value:
errors:
- code: '90050'
title: Unable to delete queue
detail: Only empty queues can be deleted.
invalid_characters:
summary: Invalid characters
value:
errors:
- code: '10015'
title: Bad Request
detail: Invalid characters in the request.
character_encoding_error:
summary: Character encoding error
value:
errors:
- code: '10028'
title: Character encoding error
detail: Error decoding request body at position 42
meta:
url: https://developers.telnyx.com/docs/overview/errors/10028
BlocksNotFound:
description: Resource not found (cross-account lookups and malformed UUIDs also return 404 — no leak).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorList'
example:
errors:
- code: '10001'
title: Not Found
detail: The requested email block was not found
BulkSIMCardActionCollectionResponse:
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/BulkSIMCardActionDetailed'
meta:
$ref: '#/components/schemas/PaginationMeta'
description: Successful Response
ChangesetError:
description: Validation error (changeset or internal `Params`). One error object per field, `source.pointer /data/attributes/`.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorList'
example:
errors:
- code: '10015'
title: Validation Failed
detail: can't be blank
source:
pointer: /data/attributes/to
Conflict:
description: The request conflicts with existing state (e.g. duplicate slug or duplicate source).
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: collection_slug_taken
title: Collection slug already in use
detail: A collection with slug 'support-transcripts' already exists for this account.
meta:
pointer: /slug
ConflictErrorResponse:
description: Resource conflict or in use
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
DependencyUnavailable:
description: A registration dependency is temporarily unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/rcs-registration_ErrorResponse'
DraftUnavailableResponse:
description: Drafts or the email domain service are temporarily unavailable (10016).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10016'
title: Service Unavailable
detail: Drafts are temporarily unavailable. Please try again later.
EmailSendTooManyRequestsResponse:
description: Send rejected before message creation because the account daily recipient quota was exhausted (10011),
the sender-domain graduation ceiling was exceeded (domain_graduation_limit_exceeded), or domain reputation is poor
(reputation_suspended).
headers:
Retry-After:
description: Seconds until the next UTC-midnight reset. Present only for domain_graduation_limit_exceeded; omitted
for 10011 and reputation_suspended.
schema:
type: integer
minimum: 1
example: 3600
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/DailySendLimitError'
- $ref: '#/components/schemas/DomainGraduationLimitExceededError'
- $ref: '#/components/schemas/ReputationSuspendedError'
examples:
accountDailyLimit:
summary: Account daily recipient quota exhausted
value:
errors:
- code: '10011'
title: Too Many Requests
detail: Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC.
senderDomainGraduation:
summary: Sender-domain graduation ceiling exceeded
value:
errors:
- code: domain_graduation_limit_exceeded
title: Too Many Requests
detail: Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight
UTC.
meta:
retry_after_seconds: 3600
remaining_today: 0
reputationSuspended:
summary: Domain reputation is poor
value:
errors:
- code: reputation_suspended
title: Sending Suspended
detail: Sender domain reputation is too low. Sending has been suspended. Please contact support to resolve
deliverability issues.
Forbidden:
description: The authenticated credential is not permitted to perform this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: forbidden
message: credential is not permitted
ForbiddenErrorResponse:
description: Insufficient permissions to access billing group
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
ForbiddenResponse:
description: Forbidden. The request is understood but has been refused.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '403'
title: Forbidden
detail: Forbidden
FrameworkError:
description: 'Framework-rendered error (e.g. 406 Not Acceptable, 405 Method Not
Allowed, 415 Unsupported Media Type). HTTP status matches the error
and the body `code` carries that same status (e.g. `"406"`, not a
hardcoded `"500"`). The explicit `500.json` clause still emits
`code: "500"` for genuine 500s.
'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorList'
example:
errors:
- code: '406'
title: Not Acceptable
detail: Not Acceptable
GatewayError400:
description: Invalid fields or values (invalid_request), or token-key budget/rate limits outside their supported range
(limit_out_of_range).
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: invalid_request
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError401:
description: Wrong/missing credential for this plane.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
WWW-Authenticate:
schema:
type: string
description: Bearer challenge for this plane; no provider/master credential disclosure.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: unauthorized
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError403:
description: Blocked/expired, exhausted budget or disallowed model; scope identifies exhausted level.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: unauthorized
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError404:
description: Absent or foreign-account resource (indistinguishable).
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: not_found
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError409:
description: Membership, idempotency or snapshot conflict.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds; retrying inference is not idempotent.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: idempotency_conflict
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError40911:
description: Expired or invalidated export cursor (cursor_expired). Restart from start_time within the retained window
and deduplicate records by id. Waiting and retrying the same cursor cannot recover; this response has no Retry-After
header.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway_Error'
example:
errors:
- code: cursor_expired
title: Request could not be completed
detail: Restart from start_time within the retained window and deduplicate records by id.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError412:
description: ETag mismatch.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: precondition_failed
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError428:
description: If-Match required.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: precondition_required
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError429:
description: Rate limited.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds; retrying inference is not idempotent.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: rate_limit_exceeded
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError502:
description: 'upstream_error: every admitted provider attempt, including configured group retries and fallbacks, failed
before the first provider event; streams return this real status instead of 200 plus an SSE error. Retrying is not
idempotent.'
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds; retrying inference is not idempotent.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: invalid_request
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError503:
description: Enforcement/secret/managed route unavailable; fail closed.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds; retrying inference is not idempotent.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: enforcement_unavailable
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GatewayError504:
description: 'upstream_timeout: as 502 upstream_error, but the last admitted attempt timed out waiting for the provider
(connect, read or write timeout, the attempt deadline, or x-ltg-request-timeout) before its first event. Retrying
is not idempotent.'
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds; retrying inference is not idempotent.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-resources_Error'
example:
errors:
- code: invalid_request
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
GetGcbChannelZonesRequestResponse:
description: A list of channel zones
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/GcbChannelZone'
meta:
$ref: '#/components/schemas/PaginationMeta'
IdempotencyConflictResponse:
description: A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key
and request.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10036'
detail: A request with this Idempotency-Key is already being processed.
source:
pointer: /header/Idempotency-Key
title: Resource is being processed
IdempotencyPayloadTooLargeResponse:
description: Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection
limit (256 KB) is rejected before it reaches the service (code 10007). Requests sent without the header are not subject
to this limit.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10007'
title: Payload Too Large
detail: The request body exceeds the Edge replay-protection limit for idempotent requests.
IdempotencyProtectionUnavailableResponse:
description: Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request. Retry
with the same key.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10016'
title: Service Unavailable
detail: Edge idempotency protection is temporarily unavailable. Please try again later.
InboundMessageLabelResponse:
description: The updated message, including its current label set.
content:
application/json:
schema:
$ref: '#/components/schemas/InboundMessageResponse'
example:
data:
id: 55555555-5555-5555-5555-555555555555
record_type: email_message
direction: inbound
status: received
inbox_id: 11111111-1111-1111-1111-111111111111
thread_id: 33333333-3333-3333-3333-333333333333
message_id:
in_reply_to:
references:
-
from:
email: alice@example.com
name: Alice
to:
- email: agent@inbox.example.test
cc: []
bcc: []
reply_to: []
subject: Project update
text_body_url: null
html_body_url: null
reply_text: Thanks, I will send it today.
has_quoted_text: true
headers: {}
inline_files: []
attachments: []
labels:
- spam
- urgent
read_at: null
received_at: '2026-07-15T12:30:00Z'
sent_at: null
created_at: '2026-07-15T12:30:00Z'
updated_at: '2026-07-15T12:30:00Z'
InboundThreadLabelResponse:
description: The thread identity and its current label set.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_thread
inbox_id:
type: string
format: uuid
labels:
type: array
items:
type: string
maxLength: 255
maxItems: 50
required:
- id
- record_type
- labels
required:
- data
example:
data:
id: 33333333-3333-3333-3333-333333333333
record_type: email_thread
inbox_id: 11111111-1111-1111-1111-111111111111
labels:
- needs_review
InboxFiltersResponse:
description: The inbox's current sender allowlist and blocklist.
content:
application/json:
schema:
$ref: '#/components/schemas/InboxFiltersResponse'
example:
data:
record_type: email_inbox_filters
allowlist:
- trusted@example.com
- '@partner.example'
blocklist:
- '@spam.example'
InitiateAICallResponse:
description: Successful response upon initiating an AI call.
content:
application/json:
schema:
$ref: '#/components/schemas/InitiateAICallResult'
InternalServerError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/DomainsErrorResponse'
example:
errors:
- code: '500'
title: Internal Server Error
detail: An unexpected error occurred
InternalServerErrorResponse:
description: Internal server error. An unexpected error occurred on the server. This is typically returned for unhandled
exceptions or system failures.
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '10007'
title: Internal server error
detail: Internal server error
LabelServiceUnavailableResponse:
description: Inbound label storage is temporarily unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10016'
title: Service Unavailable
detail: Inbox labels are temporarily unavailable. Please try again later.
ListAdvancedOrderResponse:
description: An array of Advanced Order Responses
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AdvancedOrder'
ListConnectionsResponse:
description: Successful response with a list of connections.
content:
application/json:
schema:
type: object
title: List Connections Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/Connection'
meta:
$ref: '#/components/schemas/connections_PaginationMeta'
MeetingArtifactUnavailable:
description: Artifact generation or authentication is not configured or temporarily unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: not_configured
message: artifact generation is not configured
MeetingCreateProviderError:
description: The meeting provider rejected bot creation.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: meeting provider rejected bot creation
MeetingReadAuthUnavailable:
description: Authentication is temporarily unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: auth_unavailable
message: authentication service unavailable
MeetingSendChatProviderError:
description: The meeting provider rejected native chat delivery.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: meeting provider rejected chat message
MeetingSpeakUpstreamError:
description: Text-to-speech generation or meeting audio delivery failed.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: tts_error
message: tts synthesis failed
MeetingStopProviderError:
description: The meeting provider rejected cancellation or leave.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: meeting provider rejected bot stop
MeetingStopSpeakingProviderError:
description: The meeting provider rejected stopping audio playback.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: meeting provider rejected stop audio
MeetingUpdateProviderError:
description: The meeting provider rejected the scheduled-session update.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: meeting provider rejected session update
NotFound:
description: Session or artifact not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: not_found
message: session not found
retryable: false
NotFoundErrorResponse:
description: Billing group not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
NotFoundResponse:
description: 'Resource not found. The requested resource does not exist. Common causes include: invalid call_control_id,
conference not found, audio file not found, or recording not found.'
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
examples:
resource_not_found:
summary: Generic resource not found
value:
errors:
- code: '10007'
title: Resource not found
detail: Resource not found
conference_not_found:
summary: Conference not found
value:
errors:
- code: '90058'
title: Invalid conference_id
detail: The conference does not exist.
audio_file_not_found:
summary: Audio file not found
value:
errors:
- code: '10005'
title: Audio file not found
detail: Provided audio file URL couldn't be found.
recording_not_found:
summary: Recording not found
value:
errors:
- code: '10005'
title: Recording not found
detail: The recording could not be found. Please check the recording_id and try again.
source:
pointer: /recording_id
NotFoundResponseApp:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
examples:
notFound:
value:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
source:
pointer: /
PayloadTooLarge:
description: Payload Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: invalid_request
message: request body too large
PayloadTooLargeResponse:
description: Request body exceeds the 8,000,000-byte limit for this endpoint.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
ProviderError:
description: The RCS provider rejected or could not complete the request.
content:
application/json:
schema:
$ref: '#/components/schemas/rcs-registration_ErrorResponse'
ProviderTimeout:
description: The upstream search provider timed out.
content:
application/json:
schema:
$ref: '#/components/schemas/WebSearchError'
example:
error:
message: Provider request timed out
RateLimitExceededResponse:
description: Too many requests. The API request rate limit was exceeded. Wait before retrying; honor `Retry-After` when
present. See API rate limiting. This is the request rate limit, not the dials-per-second limit of outbound calls.
headers:
X-RateLimit-Limit:
description: Request limit for the current window.
schema:
type: integer
X-RateLimit-Remaining:
description: Requests remaining in the current window.
schema:
type: integer
X-RateLimit-Reset:
description: Reset timing signal for the current window.
schema:
type: integer
Retry-After:
description: Seconds to wait before another attempt, when supplied.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '10011'
title: Too many requests
detail: You have exceeded the maximum number of allowed requests.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10011
RecordingMediaAuthenticationUnavailable:
description: The authentication service is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: auth_unavailable
message: authentication service is unavailable
RecordingMediaInvalidState:
description: Recording media cannot be deleted while the meeting is in progress.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: invalid_state
message: provider recording media cannot be deleted while the meeting is in progress
RecordingMediaProviderError:
description: The deletion request failed and the recording-media deletion outcome is unknown.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: recording-media deletion outcome is unknown
RecordingMediaResourceNotFound:
description: The meeting session does not exist or belongs to another account.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: not_found
message: meeting session not found
RecordingMediaUnsupportedCapability:
description: Recording-media deletion is not supported for this session.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: unsupported_capability
message: provider recording-media deletion is not supported
RecordingStartUnavailableResponse:
description: Service unavailable. The recording could not be started because the recording service is temporarily unavailable.
The recording was not started; retry the request.
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '90072'
title: Call recording could not be started
detail: The recording service is temporarily unavailable. The recording was not started; please retry the request.
ResourceNotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/documents_Error'
ResourceNotFoundErrorResponse:
description: Resource not found
content:
application/json:
schema:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/customer_service_record_ResourceNotFoundError'
ServiceUnavailable:
description: A required feature or dependency is not configured, authentication is unavailable, or (`assistant_lookup_unavailable`)
the assistant could not be read to check its avatar.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: not_configured
message: required feature is not configured
ServiceUnavailableErrorResponse:
description: Service temporarily unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10037'
title: Service unavailable
detail: Service is unavailable.
ServiceUnavailableResponse:
description: Service unavailable. The service is temporarily unavailable. This may occur during maintenance or when
the service is overloaded.
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '10007'
title: Service unavailable
detail: Service unavailable
TemplateRenderFailedResponse:
description: Standalone template render failure (10015).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10015'
title: Template Render Failed
detail: Liquid parse error
TooManyRequests:
description: Authentication is temporarily overloaded. Retry after the number of seconds in `Retry-After`.
headers:
Retry-After:
required: true
description: Seconds to wait before retrying.
schema:
type: integer
minimum: 1
maximum: 5
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: auth_overloaded
message: authentication temporarily overloaded
TooManyRequestsResponse:
description: Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce
the rate of outbound dial attempts and retry.
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '90103'
title: Dials per second limit exceeded.
detail: You have exceeded the number of dials per second allowed for your account.
UnauthenticatedResponse:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
examples:
Authentication Failed:
value:
errors:
- code: '10009'
title: Authentication failed
detail: Could not understand the provided credentials.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
Unauthorized:
description: Unauthorized — missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/GatewayError'
example:
errors:
- code: '10009'
title: Authentication failed
detail: Could not find any usable credentials in the request.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
UnauthorizedErrorResponse:
description: Authentication required or invalid credentials
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
UnauthorizedRequestErrorResponse:
description: Unauthorized Request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
UnauthorizedResponse:
description: Unauthorized. Authentication failed - the required authentication headers were either invalid or not included
in the request.
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
UnexpectedErrorResponse:
description: An unexpected error occurred.
content:
application/json:
schema:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/UnexpectedError'
UnprocessableEntity:
description: 'Unprocessable entity. The request could not be processed: supplied parameters were invalid, the address
failed validation for emergency use at creation (when `validate_address` is `true`, the default), or the address is
in use by an active phone number order (delete). Check the `errors` array for details; when the validation service
can suggest corrections for an invalid address, each offending field''s error entry carries the suggested value.'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The street address provided is invalid.
source:
pointer: /street_address
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
UnprocessableEntityErrorResponse:
description: Invalid request data
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
UnprocessableEntityResponse:
description: Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This
includes validation errors, invalid parameter values, call state errors, conference errors, queue errors, recording/transcription
errors, and business logic violations.
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
examples:
missing_required_parameter:
summary: Missing required parameter
value:
errors:
- code: '10004'
title: Missing required parameter
detail: The 'to' parameter is required and cannot be blank.
source:
pointer: /to
invalid_call_control_id:
summary: Invalid call control ID
value:
errors:
- code: '90015'
title: Invalid Call Control ID
detail: The call_control_id provided was not valid.
source:
pointer: /call_control_id
call_already_ended:
summary: Call has already ended
value:
errors:
- code: '90018'
title: Call has already ended
detail: This call is no longer active and can't receive commands.
call_not_answered:
summary: Call not answered yet
value:
errors:
- code: '90034'
title: Call not answered yet
detail: This call can't receive this command because it has not been answered yet.
cannot_record_before_audio_started:
summary: Cannot record before audio started
value:
errors:
- code: '90020'
title: Call recording triggered before audio started
detail: Call recording cannot be started until audio has commenced on the call.
transcription_already_active:
summary: Transcription already active
value:
errors:
- code: '90054'
title: Call transcription is already in progress
detail: Call transcription can not be started more than once.
ai_assistant_already_active:
summary: AI Assistant already active
value:
errors:
- code: '90061'
title: AI Assistant is already in progress
detail: AI Assistant cannot be started more than once.
conference_already_ended:
summary: Conference has already ended
value:
errors:
- code: '90019'
title: Conference has already ended
detail: This conference is no longer active and can't receive commands.
conference_name_conflict:
summary: Conference name conflict
value:
errors:
- code: '90033'
title: Unable to execute command
detail: Conference with given name already exists and it's active.
max_participants_reached:
summary: Maximum participants reached
value:
errors:
- code: '90032'
title: Maximum number of participants reached
detail: The maximum allowed value of `max_participants` has been reached at 100.
queue_full:
summary: Queue is full
value:
errors:
- code: '90036'
title: Queue full
detail: The 'support' queue is full and can't accept more calls.
call_already_in_queue:
summary: Call already in queue
value:
errors:
- code: '90038'
title: Call already in queue
detail: Call can't be added to a queue it's already in.
invalid_connection_id:
summary: Invalid connection ID
value:
errors:
- code: '10015'
title: Invalid value for connection_id (Call Control App ID)
detail: The requested connection_id (Call Control App ID) is either invalid or does not exist. Only Call
Control Apps with valid webhook URL are accepted.
source:
pointer: /connection_id
invalid_phone_number_format:
summary: Invalid phone number format
value:
errors:
- code: '10016'
title: Phone number must be in +E164 format
detail: The 'to' parameter must be in E164 format.
source:
pointer: /to
srtp_not_supported_for_pstn:
summary: SRTP not supported for PSTN calls
value:
errors:
- source:
pointer: /media_encryption
title: Media encryption not supported for PSTN calls
detail: SRTP media encryption is not supported for PSTN calls.
code: '10011'
fork_not_found:
summary: Call is not forked
value:
errors:
- code: '90031'
title: Call is not currently forked
detail: Can't stop forking, because the call isn't currently forked.
media_streaming_used:
summary: Media streaming in use
value:
errors:
- code: '90045'
title: Media Streaming is used
detail: This command can't be issued when media streaming is used.
invalid_enumerated_value:
summary: Invalid enumerated value
value:
errors:
- code: '10032'
title: Invalid enumerated value
detail: 'The value must be one of: dual, single.'
source:
pointer: /record_channels
value_outside_range:
summary: Value outside of range
value:
errors:
- code: '10033'
title: Value outside of range
detail: The value is outside of allowed range 1 to 5000
source:
pointer: /max_participants
UnprocessableManagedAccountEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/UnprocessableEntityError'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
UsageExportUnavailable:
description: The usage export is unavailable or its bounded read timed out. No partial or truncated page is returned.
Preserve the current cursor and retry the same read after Retry-After; on the first page, preserve start_time and
types. Do not advance the checkpoint on this error.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds to wait before retrying the same export read with its existing cursor or first-page parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway_Error'
example:
errors:
- code: enforcement_unavailable
title: Request could not be completed
detail: The usage export page could not be completed.
meta:
request_id: 11111111-1111-4111-8111-111111111111
UsageSummaryUnavailable:
description: The usage report is unavailable, its query timed out, or it exceeds the 1,000-model-row limit. No partial
or truncated report is returned. Honor Retry-After for a temporary failure. If the report exceeds its limits, narrow
the UTC date range or add metadata filters before retrying. Treat unavailable totals as unknown, not zero.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds to wait before retrying an unavailable report. Narrow the date range or add metadata filters
if the report exceeds its limits.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway_Error'
example:
errors:
- code: enforcement_unavailable
title: Request could not be completed
detail: The usage report could not be completed.
meta:
request_id: 11111111-1111-4111-8111-111111111111
ValidationError:
description: The request body or parameters failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorResponse'
ValidationErrorQuery:
description: Query-param validation error (`source.pointer /`).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorList'
example:
errors:
- code: '10015'
title: Validation Failed
detail: is invalid
source:
pointer: /filter[reason]
ValidationErrorResponse:
description: Validation Failed (10015) or changeset validation error.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10015'
title: Validation Failed
detail: subject can't be blank
source:
pointer: /data/attributes/subject
ValidationFailed:
description: Validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/DomainsErrorResponse'
example:
errors:
- code: '10015'
title: Validation Failed
detail: domain is invalid
source:
pointer: /data/attributes/domain
WabaSettingsResponse:
description: Successful response with Whatsapp business account settings
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WabaSettings'
WabaSingleResponse:
description: Successful response with Whatsapp business account
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WabaResponse'
WabasListResponse:
description: Successful response with list of Whatsapp business accounts
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WabaResponse'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
WhatsappCallingSettingsResponse:
description: Successful response with Whatsapp calling settings
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappCallingSettingsData'
WhatsappConversationWindowResponse:
description: Successful response with Whatsapp conversation window status
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappConversationWindowData'
WhatsappConversationalComponentSingleResponse:
description: Successful response with Whatsapp conversational components
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappConversationalComponent'
WhatsappHostedSignupListResponse:
description: Successful response with a list of WhatsApp hosted signups
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WhatsappHostedSignup'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
example:
data:
- id: 0192345a-7b8c-7d9e-0f12-3456789abcde
record_type: whatsapp_jwt
app_id: '123456789012345'
created_at: '2026-07-08T12:00:00Z'
expires_at: '2026-07-09T12:00:00Z'
jwt: eyJhbGciOiJSUzI1NiIs...
url: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs...
meta:
page_number: 1
page_size: 20
total_pages: 1
total_results: 1
WhatsappHostedSignupResponse:
description: Successful response with a WhatsApp hosted signup
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappHostedSignup'
example:
data:
id: 0192345a-7b8c-7d9e-0f12-3456789abcde
record_type: whatsapp_jwt
app_id: '123456789012345'
created_at: '2026-07-08T12:00:00Z'
expires_at: '2026-07-09T12:00:00Z'
jwt: eyJhbGciOiJSUzI1NiIs...
url: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs...
WhatsappPhoneSingleResponse:
description: Successful response with one WhatsApp phone number
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappPhoneResponse'
required:
- data
WhatsappPhonesListResponse:
description: Successful response with Whatsapp phone numbers
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WhatsappPhoneResponse'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
WhatsappProfileSingleResponse:
description: Successful response with Whatsapp profile
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappProfileData'
WhatsappSignupSessionListResponse:
description: Successful response with a list of WhatsApp signup sessions
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WhatsappSignupSession'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
example:
data:
- record_type: whatsapp_session_id
session_id: 019f4253-e09a-7622-bc6f-625378711d78
user_id: 00000000-0000-4000-8000-000000000000
state: SHARE_CREDIT_LINE
status: FAILURE
created_at: '2026-10-01T09:58:25Z'
updated_at: '2026-10-01T09:58:27Z'
waba_id: '123456789012345'
customer_id: acme-corp-42
errors:
- '[ShareCreditLine] Bad status received: Invalid parameter Credit Allocation Not Allowed During Month-End Close:
This WhatsApp Business Account cannot be moved onto a credit line while the monthly billing close is running.
Please try again once the close has completed, usually within the first few days of the month.'
meta:
page_number: 1
page_size: 20
total_pages: 1
total_results: 1
WhatsappSignupSessionResponse:
description: Successful response with a WhatsApp signup session
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappSignupSession'
example:
data:
record_type: whatsapp_session_id
session_id: 019f4253-e09a-7622-bc6f-625378711d78
user_id: 00000000-0000-4000-8000-000000000000
state: SHARE_CREDIT_LINE
status: FAILURE
created_at: '2026-10-01T09:58:25Z'
updated_at: '2026-10-01T09:58:27Z'
waba_id: '123456789012345'
customer_id: acme-corp-42
errors:
- '[ShareCreditLine] Bad status received: Invalid parameter Credit Allocation Not Allowed During Month-End Close:
This WhatsApp Business Account cannot be moved onto a credit line while the monthly billing close is running.
Please try again once the close has completed, usually within the first few days of the month.'
WhatsappTemplateListResponse:
description: Successful response with Whatsapp template
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WhatsappTemplateData'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
WhatsappTemplateSingleResponse:
description: Successful response with Whatsapp template
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappTemplateData'
WhatsappUserDataResponse:
description: Successful response with Whatsapp user data
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappUserData'
ai-gateway-spend_GatewayError400:
description: 'Invalid fields, unsupported protocol options, bad page/date range (invalid_request); a well-formed token
key limit of 0 or above its maximum (limit_out_of_range). prompt_blocked / response_blocked: the group guardrail policy
blocked the prompt or the generated response. invalid_metadata: an authenticated inference request''s x-ltg-metadata
header is not a valid RequestMetadata object; the response never echoes the header.'
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-spend_Error'
example:
errors:
- code: invalid_request
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
ai-gateway-spend_GatewayError409:
description: The snapshot is missing, invalid, expired or does not match the account, range, filters or page size. Correct
the parameters to match a valid snapshot, or restart at page[number]=1 without page[snapshot] to obtain a new snapshot.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Advisory delay in seconds. Waiting does not repair a missing, invalid, expired or mismatched snapshot.
Correct the parameters to match a valid snapshot, or restart at page[number]=1 without page[snapshot]; do not
replay an unchanged invalid snapshot request.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-spend_Error'
example:
errors:
- code: conflict
title: Snapshot conflict
detail: Correct the parameters to match a valid snapshot, or restart at page[number]=1 without page[snapshot].
meta:
request_id: 11111111-1111-4111-8111-111111111111
ai-gateway-spend_GatewayError503:
description: The report is unavailable or exceeds its bounded snapshot capacity. The report snapshot supports at most
10,000 matching requests, independently of page size. Exceeding this bound returns HTTP 503 without partial results.
Narrow the date range or resource filters before retrying. A failed report must not be interpreted as zero usage.
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
Retry-After:
schema:
type: integer
minimum: 1
description: Seconds to wait before retrying an unavailable report. Narrow filters when the report exceeds its limits.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway-spend_Error'
example:
errors:
- code: enforcement_unavailable
title: Request could not be completed
detail: The report is unavailable or exceeds 10,000 matching requests. Narrow the date range or resource filters
if the capacity limit is exceeded.
meta:
request_id: 11111111-1111-4111-8111-111111111111
ai-gateway_GatewayError400:
description: 'Invalid fields, unsupported protocol options, bad page/date range (invalid_request); a well-formed token
key limit of 0 or above its maximum (limit_out_of_range). prompt_blocked / response_blocked: the group guardrail policy
blocked the prompt or the generated response. invalid_metadata: an authenticated inference request''s x-ltg-metadata
header is not a valid RequestMetadata object; the response never echoes the header.'
headers:
X-Request-ID:
schema:
type: string
format: uuid
description: Server-generated correlation ID.
Cache-Control:
schema:
const: no-store
description: All API responses; application cache is server-side only.
content:
application/json:
schema:
$ref: '#/components/schemas/ai-gateway_Error'
example:
errors:
- code: invalid_request
title: Request could not be completed
detail: Check the request and the documented handling for this error.
meta:
request_id: 11111111-1111-4111-8111-111111111111
billing_ForbiddenErrorResponse:
description: Insufficient permissions to access balance information
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
billing_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
billing_UnprocessableEntityErrorResponse:
description: Invalid or missing account information
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
branded-calling_GenericErrorResponse:
description: An error occurred. The response carries the standard Telnyx error envelope.
content:
application/json:
schema:
$ref: '#/components/schemas/branded-calling_Errors'
examples:
validation_error:
summary: 422 - request body failed validation
value:
errors:
- code: '10005'
title: Invalid parameters
detail: field required
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
source:
pointer: /body/legal_name
bad_request:
summary: 400 - request rejected by a state guard
description: Returned when the request itself is well-formed but the resource is in a state that disallows this
action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting).
value:
errors:
- code: '10015'
title: Bad Request
detail: Cannot update DIR in 'verified' status
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
not_found:
summary: 404 - resource does not exist or is not yours
value:
errors:
- code: '10009'
title: Resource not found
detail: Enterprise not found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
conflict:
summary: 409 - request conflicts with current resource state
value:
errors:
- code: '10021'
title: Resource in use
detail: DIR has 1 active infringement claim(s). Resolve the claim before making this change.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10021
bundle-pricing_BadRequestErrorResponse:
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
bundle-pricing_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
bundle-pricing_NotFoundErrorResponse:
description: Resource not found
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
bundle-pricing_UnprocessableEntityErrorResponse:
description: Request cannot be processed
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
call-control_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/call-control_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
call-recordings_GenericErrorResponse:
description: Unexpected error.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
call-recordings_InternalServerErrorResponse:
description: Internal server error. An unexpected error occurred on the server.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '500'
title: Internal Server Error
detail: Internal server error
call-recordings_NotFoundResponse:
description: Resource not found. The requested resource or URL could not be found.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
not_found:
summary: Generic not found
value:
errors:
- code: '404'
title: Not Found
detail: Page not found
connection_not_found:
summary: Connection not found
value:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
source:
pointer: /connection_id
call-recordings_UnauthorizedResponse:
description: Unauthorized. The request lacks valid authentication credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '401'
title: Unauthorized
detail: Unauthorized
call-scripting_BadRequestResponse:
description: Bad request. The request could not be understood or was missing required parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
examples:
conference_ended:
summary: Conference already ended
value:
errors:
- code: '90019'
title: Conference has already ended
detail: This conference is no longer active and can't receive commands.
participant_on_hold:
summary: Participant on hold
value:
errors:
- code: '90047'
title: Participant on hold
detail: This participant is on hold
call-scripting_GenericErrorResponse:
description: An unexpected error occurred while processing the request.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occurred.
call-scripting_NotFoundResponse:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ResourceNotFoundError'
call-scripting_NotFoundResponse_c75353cb83:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ResourceNotFoundError_c75353cb83'
call-scripting_TooManyRequestsResponse:
description: Too many requests. The number of dial attempts per second allowed for your account has been exceeded. Reduce
the rate of outbound dial attempts and retry.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
example:
errors:
- code: '90103'
title: Dials per second limit exceeded.
detail: You have exceeded the number of dials per second allowed for your account.
call-scripting_UnauthorizedResponse:
description: The user doesn't have the required permissions to perform the requested action.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
examples:
notAuthorized:
value:
errors:
- code: '10010'
title: Not authorized
detail: You are not authorized to access the requested resource.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10010
source:
pointer: /
call-scripting_UnprocessableEntityResponse:
description: Unprocessable entity. The request was well-formed but contains semantic errors.
content:
application/json:
schema:
$ref: '#/components/schemas/calls_ErrorResponse'
examples:
missing_required_parameter:
summary: Missing required parameter
value:
errors:
- code: '10004'
title: Missing required parameter
detail: 'Can''t be blank: ApplicationId'
source:
pointer: /ApplicationId
invalid_parameter_type:
summary: Invalid parameter type
value:
errors:
- code: '10026'
title: Invalid parameter type
detail: The 'To' parameter must be of type 'string'
source:
pointer: /To
invalid_enumerated_value:
summary: Invalid enumerated value
value:
errors:
- code: '10032'
title: Invalid enumerated value
detail: Status must be one of completed
source:
pointer: /Status
invalid_send_digits:
summary: Invalid SendDigits format
value:
errors:
- code: '90014'
title: Invalid value for SendDigits
detail: 'The ''SendDigits'' parameter must be a ''string'' made of a combination of either 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, A, B, C, D, w, W, * or #'
source:
pointer: /SendDigits
call-scripting_UnprocessableEntityResponse_c75353cb83:
description: Unprocessable entity. The request was well-formed but contains semantic errors.
content:
application/json:
schema:
$ref: '#/components/schemas/call-scripting_ErrorResponse'
examples:
missing_required_parameter:
summary: Missing required parameter
value:
errors:
- code: '10004'
title: Missing required parameter
detail: 'Can''t be blank: ApplicationId'
source:
pointer: /ApplicationId
invalid_parameter_type:
summary: Invalid parameter type
value:
errors:
- code: '10026'
title: Invalid parameter type
detail: The 'To' parameter must be of type 'string'
source:
pointer: /To
invalid_enumerated_value:
summary: Invalid enumerated value
value:
errors:
- code: '10032'
title: Invalid enumerated value
detail: Status must be one of completed
source:
pointer: /Status
invalid_send_digits:
summary: Invalid SendDigits format
value:
errors:
- code: '90014'
title: Invalid value for SendDigits
detail: 'The ''SendDigits'' parameter must be a ''string'' made of a combination of either 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, A, B, C, D, w, W, * or #'
source:
pointer: /SendDigits
charges_BadRequestErrorResponse:
description: Invalid request parameters or date range
content:
application/json:
schema:
$ref: '#/components/schemas/charges_Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
charges_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/charges_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
charges_UnprocessableEntityErrorResponse:
description: User account not found
content:
application/json:
schema:
$ref: '#/components/schemas/charges_Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
collections_BadRequest:
description: The request was malformed or failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
collections_NotFound:
description: The requested resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: collection_not_found
title: Collection not found
detail: No collection with uuid 'b3b1c8a2-9f4e-4d2a-9c1e-2f7a6d5b4c3a' exists for this account.
collections_Unauthorized:
description: Missing or invalid authentication.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
connections_BadRequestResponse:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/connections_ErrorResponse'
examples:
missingParameter:
value:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
connections_NotFoundResponse:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/connections_ErrorResponse'
examples:
notFound:
value:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
source:
pointer: /
connections_UnauthorizedResponse:
description: The user doesn't have the required permissions to perform the requested action.
content:
application/json:
schema:
$ref: '#/components/schemas/connections_ErrorResponse'
examples:
notAuthorized:
value:
errors:
- code: '10010'
title: Not authorized
detail: You are not authorized to access the requested resource.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10010
source:
pointer: /
connections_UnprocessableEntityResponse:
description: The request was well-formed but was unable to be followed due to semantic errors.
content:
application/json:
schema:
$ref: '#/components/schemas/connections_ErrorResponse'
examples:
unprocessableEntity:
value:
errors:
- code: '10015'
title: Bad Request
detail: 'Invalid dnis_format: test, was provided. Acceptable formats are +e164, e164, national, sip_username'
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
source:
pointer: /inbound/dnis_number_format
customer_service_record_ForbiddenErrorResponse:
description: You do not have permission to perform the requested action on the specified resource or resources.
content:
application/json:
schema:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ForbiddenError'
customer_service_record_UnauthorizedErrorResponse:
description: The required authentication headers were either invalid or not included in the request.
content:
application/json:
schema:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/UnauthorizedError'
customer_service_record_UnprocessableEntityErrorResponse:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/customer_service_record_UnprocessableEntityError'
documents_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
documents_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
email_BadRequestResponse:
description: Bad Request / Validation Failed (10015).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10015'
title: Bad Request
detail: email is required
email_ForbiddenResponse:
description: Forbidden (10007), such as domain not verified, suspended, degraded, or missing DKIM.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10007'
title: Forbidden
detail: Domain is not verified. Complete DNS setup before sending email.
email_InternalServerErrorResponse:
description: Internal server error (10019).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10019'
title: Internal Server Error
detail: Failed to create batch validation
email_NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/DomainsErrorResponse'
example:
errors:
- code: '10001'
title: Not Found
detail: The requested email domain was not found
email_NotFoundResponse:
description: Resource not found (10001).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10001'
title: Not Found
detail: The requested resource was not found
email_ServiceUnavailableResponse:
description: Service unavailable (10016), including an unavailable upstream dependency or unavailable Edge idempotency
protection for a keyed request.
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10016'
title: Service Unavailable
detail: The email domain service is temporarily unavailable. Please try again later.
email_Unauthorized:
description: Missing or invalid gateway auth.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorList'
example:
errors:
- code: '10007'
title: Unauthorized
detail: Missing authentication
email_UnauthorizedResponse:
description: Not authorized (10006).
content:
application/json:
schema:
$ref: '#/components/schemas/email_ErrorResponse'
example:
errors:
- code: '10006'
title: Not authorized
detail: Invalid API key
meta:
url: https://developers.telnyx.com/docs/overview/errors/10006
emergency_BadRequestResponse:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
emergency_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
emergency_NotFoundResponse:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
emergency_UnauthorizedResponse:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
emergency_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
invoice_BadRequestErrorResponse:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
invoice_ForbiddenErrorResponse:
description: Insufficient permissions to access invoices
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10010'
title: Authorization failed
detail: You do not have permission to perform the requested action on the specified resource or resources.
invoice_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
invoice_NotFoundErrorResponse:
description: Invoice not found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
managed-accounts_ForbiddenResponse:
description: Unauthorized response. Happens when the current user is not authorized to access the endpoint.
managed-accounts_UnauthorizedResponse:
description: Unauthenticated response. Happens when the current user cannot be authenticated.
management_messaging_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: string
title: string
detail: string
source:
pointer: /data/attributes/phone_number
parameter: string
media-storage_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: string
title: string
detail: string
source:
pointer: string
parameter: string
media-streaming_GenericErrorResponse:
description: Unexpected error.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
media-streaming_NotFoundResponse:
description: Resource not found. The requested resource or URL could not be found.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
not_found:
summary: Generic not found
value:
errors:
- code: '404'
title: Not Found
detail: Page not found
connection_not_found:
summary: Connection not found
value:
errors:
- code: '10005'
title: Resource not found
detail: The Dialogflow connection for the specified connection_id could not be found.
source:
pointer: /connection_id
media-streaming_UnprocessableEntityResponse:
description: Unprocessable entity. The request was well-formed but contains semantic errors.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '422'
title: Unprocessable Entity
detail: The request parameters failed validation.
source:
pointer: /service_account
meeting-sessions_BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: invalid_request
message: request is invalid
meeting-sessions_Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: invalid_state
message: only scheduled sessions can be updated
meeting-sessions_InternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: internal_error
message: internal server error
meeting-sessions_NotFound:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: not_found
message: meeting session not found
meeting-sessions_Unauthorized:
description: 'Unauthorized. On api.telnyx.com, authentication is enforced by the API gateway before the request reaches
the Meeting service, so a missing or invalid API key returns the standard Telnyx error envelope (`{"errors": [{"code":
"10009", ...}]}`) rather than the single-`error` shape below.'
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: unauthorized
message: invalid or missing credentials
meeting-sessions_UnprocessableEntity:
description: Unprocessable Entity, including an unsupported capability
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: unsupported_capability
message: avatar video is not supported on platform 'unknown'
messaging_BadRequestResponse:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
messaging_BadRequestResponse_0b38e7044b:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
messaging_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
messaging_GenericErrorResponse_0b38e7044b:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: string
title: string
detail: string
source:
pointer: /data/attributes/phone_number
parameter: string
messaging_IdempotencyConflictResponse:
description: A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key
and request.
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10036'
title: Resource is being processed
detail: A request with this Idempotency-Key is already being processed.
source:
pointer: /header/Idempotency-Key
messaging_NotFoundResponse:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
messaging_NotFoundResponse_0b38e7044b:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
messaging_UnauthorizedResponse:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
messaging_UnauthorizedResponse_0b38e7044b:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
messaging_UnprocessableEntityResponse:
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
messaging_UnprocessableEntityResponse_0b38e7044b:
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors_0b38e7044b'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
messaging_WabasListResponse:
description: Successful response with list of Whatsapp business accounts
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WabaResponse'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
messaging_WhatsappPhonesListResponse:
description: Successful response with Whatsapp phone numbers
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WhatsappPhoneResponse'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
messaging_WhatsappTemplateListResponse:
description: Successful response with Whatsapp template
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/WhatsappTemplateData'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
messaging_toll_free_verification_GenericErrorResponse:
description: Generic error response
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: string
title: string
detail: string
source:
pointer: string
parameter: string
netapps_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/netapps_Errors'
netapps_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/netapps_Errors'
netapps_UnprocessableEntity_17904fcfbc:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
notifications_BadRequestResponse:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
notifications_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
notifications_NotFoundResponse:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
notifications_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
number-lookup_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
number-lookup_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
number-reputation_GenericErrorResponse:
description: An error occurred. The response carries the standard Telnyx error envelope.
content:
application/json:
schema:
$ref: '#/components/schemas/number-reputation_Errors'
examples:
validation_error:
summary: 422 - request body failed validation
value:
errors:
- code: '10005'
title: Invalid parameters
detail: field required
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
source:
pointer: /body/legal_name
bad_request:
summary: 400 - request rejected by a state guard
description: Returned when the request itself is well-formed but the resource is in a state that disallows this
action (e.g. updating a DIR while it is being vetted, or deleting an enterprise that still has DIRs in vetting).
value:
errors:
- code: '10015'
title: Bad Request
detail: Cannot update DIR in 'verified' status
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
not_found:
summary: 404 - resource does not exist or is not yours
value:
errors:
- code: '10009'
title: Resource not found
detail: Enterprise not found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
conflict:
summary: 409 - request conflicts with current resource state
value:
errors:
- code: '10021'
title: Resource in use
detail: DIR has 1 active infringement claim(s). Resolve the claim before making this change.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10021
numbers_BadRequestResponse:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_Errors'
numbers_BadRequestResponse_73c9788e53:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
numbers_ForbiddenResponse:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_Errors'
examples:
Not authorized:
$ref: '#/components/examples/NotAuthorized'
numbers_ForbiddenResponse_73c9788e53:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Not authorized:
$ref: '#/components/examples/NotAuthorized'
numbers_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_Errors'
numbers_NotFoundResponse:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_Errors'
numbers_NotFoundResponse_73c9788e53:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
numbers_UnauthorizedResponse:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_Errors'
examples:
Authentication Failed:
value:
errors:
- code: '10009'
title: Authentication failed
detail: Could not understand the provided credentials.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
numbers_UnauthorizedResponse_73c9788e53:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
Authentication Failed:
value:
errors:
- code: '10009'
title: Authentication failed
detail: Could not understand the provided credentials.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
numbers_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_Errors'
numbers_UnprocessableEntity_73c9788e53:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
phone-numbers_messaging_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
profiles_messaging_NotFoundResponse:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
programmable-fax_BadRequestResponse:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/programmable-fax_ErrorResponse'
examples:
missingParameter:
value:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
programmable-fax_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
programmable-fax_NotFoundResponse:
description: The requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '404'
title: Not Found
detail: The requested resource does not exist
programmable-fax_UnauthorizedResponse:
description: Unauthorized
programmable-fax_UnprocessableEntityResponse:
description: Unprocessable entity. The request was well-formed but contains semantic errors.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '422'
title: Unprocessable Entity
detail: The request parameters failed validation
rcs-registration_BadRequest:
description: The request or idempotency header is malformed.
content:
application/json:
schema:
$ref: '#/components/schemas/rcs-registration_ErrorResponse'
rcs-registration_Conflict:
description: The operation is not allowed in the current lifecycle state or the idempotency key was used for a different
request.
content:
application/json:
schema:
$ref: '#/components/schemas/rcs-registration_ErrorResponse'
rcs-registration_NotFound:
description: The resource does not exist, is not owned by the organization, or the provider does not support the requested
capability.
content:
application/json:
schema:
$ref: '#/components/schemas/rcs-registration_ErrorResponse'
rcs-registration_Unauthorized:
description: The request is not authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/rcs-registration_ErrorResponse'
rcs_messaging_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/messaging_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
sim-cards-configuration_wireless_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
sim-cards-configuration_wireless_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
sim-cards-monitoring_wireless_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
sim-cards-monitoring_wireless_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
siprec_siprec_GenericErrorResponse:
description: Unexpected error.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
siprec_siprec_NotFoundResponse:
description: The requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: 404
title: Not Found
detail: The requested resource does not exist
siprec_siprec_UnprocessableEntityResponse:
description: Unprocessable entity. The request was well-formed but contains semantic errors.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: 422
title: Unprocessable Entity
detail: The request parameters failed validation
speech-to-text_UnprocessableEntityResponse:
description: Unprocessable entity. The request was well-formed but could not be processed due to semantic errors. This
includes validation errors, invalid parameter values and business logic violations.
content:
application/json:
schema:
$ref: '#/components/schemas/speech-to-text_Errors'
examples:
missing_required_parameter:
summary: Missing required parameter
value:
errors:
- code: '10004'
title: Missing required parameter
detail: The 'transcription_engine' parameter is required and cannot be blank.
source:
pointer: /transcription_engine
toll-free-verification_GenericErrorResponse:
description: Generic error response
content:
application/json:
schema:
$ref: '#/components/schemas/toll-free-verification_Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
users_BadRequestResponse:
description: Bad request, the request was unacceptable, often due to missing a required parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/users_ErrorResponse'
examples:
missingParameter:
value:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
source:
pointer: /
meta:
url: https://developers.telnyx.com/docs/overview/errors/10015
users_NotFoundResponse:
description: The requested resource doesn't exist.
content:
application/json:
schema:
$ref: '#/components/schemas/users_ErrorResponse'
examples:
notFound:
value:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10005
source:
pointer: /
users_UnauthorizedResponse:
description: The user doesn't have the required permissions to perform the requested action.
content:
application/json:
schema:
$ref: '#/components/schemas/users_ErrorResponse'
examples:
notAuthorized:
value:
errors:
- code: '10010'
title: Not authorized
detail: You are not authorized to access the requested resource.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10010
source:
pointer: /
verified-numbers_GenericErrorResponse:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10015'
title: Bad Request
detail: The request failed because it was not well-formed.
verified-numbers_NotFoundErrorResponse:
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10005'
title: Resource not found
detail: The requested resource or URL could not be found.
verified-numbers_UnprocessableEntityErrorResponse:
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
verify_GenericErrorResponse:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
video_Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/video_Error'
video_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
message:
type: string
example: Error
video_ResourceNotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/video_Error'
example:
code: string
title: string
detail: string
source:
pointer: string
parameter: string
video_UnauthorizedResponse:
description: Unauthorized
video_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
voice-channels_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
example:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
web-search_BadRequest:
description: Invalid request — validation error or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/WebSearchError'
example:
error:
message: Validation error
details: {}
web-search_InternalServerError:
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/WebSearchError'
example:
error:
message: Internal server error
web-search_NotFound:
description: Research task not found. Returned for unknown, malformed, expired, or already-purged task IDs.
content:
application/json:
schema:
$ref: '#/components/schemas/WebSearchError'
example:
error:
message: Task not found
web-search_ProviderError:
description: The upstream search provider returned an error.
content:
application/json:
schema:
$ref: '#/components/schemas/WebSearchError'
example:
error:
message: Provider request failed
web-search_Unauthorized:
description: 'Unauthorized — missing or invalid API key.
The API Gateway returns this response before the request reaches the backend service. The error format follows the
standard Telnyx JSON:API error envelope with `errors[]`, not the backend-level `WebSearchError` shape.'
content:
application/json:
schema:
$ref: '#/components/schemas/web-search_GatewayError'
example:
errors:
- code: '10009'
title: Authentication failed
detail: Could not find any usable credentials in the request.
meta:
url: https://developers.telnyx.com/docs/overview/errors/10009
wireless_GenericErrorResponse:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Errors'
wireless_GenericErrorResponse_c5290d5308:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
unexpectedError:
summary: Unexpected API error
value:
errors:
- code: '10007'
title: Unexpected error
detail: An unexpected error occured.
wireless_ResourceNotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Error'
wireless_Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
authenticationFailed:
summary: Authentication failed
value:
errors:
- code: '10009'
title: Authentication failed
detail: The required authentication headers were either invalid or not included in the request.
wireless_UnprocessableEntity:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/wireless_Errors'
wireless_UnprocessableEntity_c5290d5308:
description: Unprocessable entity. Check the 'detail' field in response for details.
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
unprocessableEntity:
summary: Request could not be processed
value:
errors:
- code: '10027'
title: Unprocessable Entity
detail: The server understood the syntax of the request but was unable to process the instructions.
schemas:
10dlc_Error:
required:
- code
- title
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
10dlc_Error_ca4eb0ad6f:
required:
- code
- title
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
10dlc_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/10dlc_Error'
type: object
10dlc_HTTPValidationError:
title: HTTPValidationError
type: object
properties:
detail:
title: Detail
type: array
items:
$ref: '#/components/schemas/ValidationError'
10dlc_TaskStatus:
title: TaskStatus
enum:
- pending
- processing
- completed
- failed
type: string
description: An enumeration.
A2AAgentHeader:
type: object
title: A2AAgentHeader
description: A header sent when fetching an A2A agent's card and on every call made to that agent.
properties:
name:
type: string
description: HTTP header name. May only contain alphanumeric characters, hyphens, and underscores, or a `{{dynamic_variable}}`
placeholder surrounded by those characters.
example: X-Api-Key
value:
type: string
description: Header value, stored exactly as written. It may be a literal, a `{{dynamic_variable}}`, or an `{{#integration_secret}}identifier{{/integration_secret}}`
section that resolves to a stored integration secret when the conversation starts. Control characters are not
allowed. The encrypted `{{variable | encryption_secret_ref}}` form used for per-caller credentials is not resolved
here and is rejected when the assistant is saved.
example: '{{#integration_secret}}my_agent_api_key{{/integration_secret}}'
required:
- name
- value
AIAssistantAddMessagesRequest:
type: object
title: AI Assistant Add Messages Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
messages:
description: The messages to add to the conversation.
type: array
items:
oneOf:
- $ref: '#/components/schemas/UserMessage'
- $ref: '#/components/schemas/AssistantMessage'
- $ref: '#/components/schemas/ToolMessage'
- $ref: '#/components/schemas/SystemMessage'
- $ref: '#/components/schemas/DeveloperMessage'
discriminator:
propertyName: role
mapping:
user: '#/components/schemas/UserMessage'
assistant: '#/components/schemas/AssistantMessage'
tool: '#/components/schemas/ToolMessage'
system: '#/components/schemas/SystemMessage'
developer: '#/components/schemas/DeveloperMessage'
trigger_response:
type: boolean
description: When `true`, the injected messages immediately trigger an assistant response/turn instead of waiting
for the next natural turn or idle timeout. This may interrupt a user who is still speaking.
default: false
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
messages:
- role: system
content: Get the user's favorite color
trigger_response: false
AIAssistantJoinParticipant:
type: object
required:
- id
- role
properties:
id:
type: string
description: The call_control_id of the participant to add to the conversation.
example: v3:abc123def456
role:
type: string
description: The role of the participant in the conversation.
enum:
- user
example: user
name:
type: string
description: Display name for the participant.
example: John Doe
on_hangup:
type: string
description: Determines what happens to the conversation when this participant hangs up.
enum:
- continue_conversation
- end_conversation
default: continue_conversation
example: continue_conversation
AIAssistantJoinRequest:
type: object
required:
- conversation_id
- participant
properties:
conversation_id:
type: string
description: The ID of the AI assistant conversation to join.
example: v3:abc123
participant:
$ref: '#/components/schemas/AIAssistantJoinParticipant'
client_state:
type: string
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
type: string
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
AIAssistantStartRequest:
type: object
properties:
assistant:
$ref: '#/components/schemas/CallAssistantRequest'
greeting:
description: Text that will be played when the assistant starts, if none then nothing will be played when the assistant
starts. The greeting can be text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character
limit.
type: string
example: Hello, can you tell me your age and where you live?
interruption_settings:
$ref: '#/components/schemas/InterruptionSettings'
transcription:
$ref: '#/components/schemas/TranscriptionConfig'
message_history:
type: array
description: A list of messages to seed the conversation history before the assistant starts. Follows the same message
format as the `ai_assistant_add_messages` command.
items:
oneOf:
- $ref: '#/components/schemas/UserMessage'
- $ref: '#/components/schemas/AssistantMessage'
- $ref: '#/components/schemas/ToolMessage'
- $ref: '#/components/schemas/SystemMessage'
- $ref: '#/components/schemas/DeveloperMessage'
discriminator:
propertyName: role
mapping:
user: '#/components/schemas/UserMessage'
assistant: '#/components/schemas/AssistantMessage'
tool: '#/components/schemas/ToolMessage'
system: '#/components/schemas/SystemMessage'
developer: '#/components/schemas/DeveloperMessage'
default: []
send_message_history_updates:
type: boolean
description: When `true`, a `call.ai_gather.message_history_updated` webhook carrying the full message history is
sent each time the conversation message history is updated. The assistant's own `telephony_settings.send_message_history_updates`
overrides this value when it is set.
default: false
participants:
type: array
description: A list of participants to add to the conversation when it starts.
items:
$ref: '#/components/schemas/AIAssistantJoinParticipant'
default: []
client_state:
type: string
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
AIAssistantStopRequest:
type: object
title: AI Assistant Stop Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
AUIdVerificationParams:
type: object
description: Required information for initiating the action requirement for AU ID verification.
required:
- first_name
- last_name
properties:
first_name:
type: string
description: The first name of the person that will perform the verification flow.
example: John
last_name:
type: string
description: The last name of the person that will perform the verification flow.
example: Doe
AWSVoiceSettings:
type: object
title: AWS Voice Settings
properties:
type:
type: string
enum:
- aws
description: Voice settings provider type
required:
- type
AcceptSuggestionsRequest:
type: object
properties:
id:
type: string
description: The ID of the address.
AcceptedIngest:
properties:
operation_id:
type: string
title: Operation Id
profile_id:
type: string
title: Profile Id
session_id:
type: string
title: Session Id
source_id:
type: string
title: Source Id
description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by
`ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.'
type: object
required:
- operation_id
- profile_id
- session_id
- source_id
title: AcceptedIngest
AcceptedMemory:
properties:
operation_id:
type: string
title: Operation Id
profile_id:
type: string
title: Profile Id
source_id:
type: string
title: Source Id
description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by
`ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.'
type: object
required:
- operation_id
- profile_id
- source_id
title: AcceptedMemory
AccessIPAddressListResponseSchema:
title: AccessIPAddressListResponseSchema
required:
- data
- meta
type: object
properties:
data:
title: Data
type: array
items:
$ref: '#/components/schemas/AccessIPAddressResponseSchema'
meta:
$ref: '#/components/schemas/cloudflare-ip-list-sync_PaginationMeta'
AccessIPAddressPOST:
title: AccessIPAddressPOST
required:
- ip_address
type: object
properties:
ip_address:
title: Ip Address
type: string
description:
title: Description
type: string
AccessIPAddressResponseSchema:
title: AccessIPAddressResponseSchema
required:
- id
- ip_address
- source
- status
- user_id
type: object
properties:
id:
title: Id
type: string
ip_address:
title: Ip Address
type: string
source:
title: Source
type: string
status:
$ref: '#/components/schemas/CloudflareSyncStatus'
description:
title: Description
type: string
user_id:
title: User Id
type: string
created_at:
title: Created At
type: string
format: date-time
updated_at:
title: Updated At
type: string
format: date-time
AccessIPRangeListResponseSchema:
title: AccessIPRangeListResponseSchema
required:
- data
- meta
type: object
properties:
data:
title: Data
type: array
items:
$ref: '#/components/schemas/AccessIPRangeResponseSchema'
meta:
$ref: '#/components/schemas/cloudflare-ip-list-sync_PaginationMeta'
AccessIPRangePOST:
title: AccessIPRangePOST
required:
- cidr_block
type: object
properties:
cidr_block:
title: Cidr Block
type: string
description:
title: Description
type: string
AccessIPRangeResponseSchema:
title: AccessIPRangeResponseSchema
required:
- id
- cidr_block
- status
- user_id
type: object
properties:
id:
title: Id
type: string
cidr_block:
title: Cidr Block
type: string
status:
$ref: '#/components/schemas/CloudflareSyncStatus'
description:
title: Description
type: string
user_id:
title: User Id
type: string
created_at:
title: Created At
type: string
format: date-time
updated_at:
title: Updated At
type: string
format: date-time
AccountEmailEvent:
type: object
description: 'An account-polling event. The envelope is webhook-shaped, but polling preserves stored-event cardinality:
queued, sending, sandbox, cancelled, and daily_limit_exceeded message events fan out per recipient; scheduled remains
one message-scoped row. Payload fields vary among recipient-scoped, message-scoped, and minimal fallback rows.'
properties:
id:
type: string
format: uuid
description: Event UUID.
event_type:
type: string
pattern: ^email\.
example: email.delivered
description: Legacy customer-visible event name, prefixed with `email.`. Gateway rejections render `email.failed`;
MTA expirations render `email.bounced`. Webhook subscription allowlists match the legacy name.
canonical_event_type:
type: string
pattern: ^email\.
example: email.delivered
description: Additive canonical outcome name, prefixed with `email.`. Gateway rejection is `email.gw_reject`, ambiguous
injection timeout is `email.injection_timeout`, and MTA expiration is `email.expired`. Unchanged outcomes retain
their names. Existing stored rows are translated only when recorded payload evidence proves the outcome; a legacy
failed row is not guessed or sharpened.
occurred_at:
type: string
format: date-time
recipient_id:
type: string
format: uuid
description: Durable email recipient UUID. Present for recipient-scoped events, including each queued, sending,
sandbox, cancelled, and daily_limit_exceeded fan-out event.
payload:
$ref: '#/components/schemas/AccountEmailEventPayload'
required:
- id
- event_type
- canonical_event_type
- occurred_at
- payload
AccountEmailEventListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AccountEmailEvent'
meta:
$ref: '#/components/schemas/EventPaginationMeta'
required:
- data
- meta
AccountEmailEventPayload:
type: object
additionalProperties: true
description: Payload returned by GET /email_events. Every row includes id, status, and occurred_at. Recipient-scoped
rows also include recipient_id, from, subject, and exactly one object-valued to, cc, or bcc field. Legacy or message-scoped
rows can omit recipient_id and use object-valued or string-valued to/cc fields, including an empty string when no
address exists; bcc is redacted. If the related message or recipient cannot be loaded, the minimal fallback can omit
from, subject, and recipient fields. Additional persisted public evidence can be present.
properties:
id:
type: string
format: uuid
description: Email message UUID.
recipient_id:
type: string
format: uuid
description: Durable email recipient UUID. Present for recipient-scoped events.
status:
type: string
description: 'Stored event outcome slug, not the authoritative recipient status. Account polling returns the stored
name, including suppression, scan, and quarantine lifecycle names. Webhooks retain legacy payload names: gateway
rejections use failed and MTA expirations use bounced. New sharp stored rows can expose gw_reject, injection_timeout,
or expired. Use the envelope canonical_event_type to identify the outcome across surfaces.'
enum:
- queued
- deferred
- scheduled
- cancelled
- sandbox
- sending
- sent
- failed
- delivered
- bounced
- complained
- suppressed
- rejected
- opened
- clicked
- unsubscribed
- daily_limit_exceeded
- scan_deferred
- quarantined
- quarantine_released
- quarantine_release_dispatched
- quarantine_rejected
- quarantine_expired
- gw_reject
- injection_timeout
- expired
occurred_at:
type: string
format: date-time
from:
$ref: '#/components/schemas/AccountEmailEventSender'
to:
oneOf:
- $ref: '#/components/schemas/EmailWebhookRecipient'
- type: string
description: Legacy message-scoped address, or an empty string when absent.
cc:
oneOf:
- $ref: '#/components/schemas/EmailWebhookRecipient'
- type: string
description: Legacy message-scoped address, or an empty string when absent.
bcc:
oneOf:
- $ref: '#/components/schemas/EmailWebhookRecipient'
- type: string
enum:
- redacted
subject:
type: string
required:
- id
- status
- occurred_at
AccountEmailEventSender:
type: object
additionalProperties: false
description: Sender projection in account event polling. The display name is explicitly null when the message has no
sender name.
properties:
email:
type: string
format: email
name:
type: string
nullable: true
required:
- email
- name
AccountSid:
type: string
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
ActionAcceptedResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- accepted
properties:
accepted:
type: boolean
const: true
example:
data:
accepted: true
ActionRequest:
description: 'Discriminated union on type. Variants are strict: unknown fields are rejected with 400. Reusing an idempotency_key
with an identical request replays the original resource; with a different request it returns 409 idempotency_conflict.'
oneOf:
- $ref: '#/components/schemas/NavigateAction'
- $ref: '#/components/schemas/ObserveAction'
- $ref: '#/components/schemas/ClickAction'
- $ref: '#/components/schemas/FillAction'
- $ref: '#/components/schemas/SelectAction'
- $ref: '#/components/schemas/PressAction'
- $ref: '#/components/schemas/ScrollAction'
- $ref: '#/components/schemas/ScreenshotAction'
- $ref: '#/components/schemas/WaitForAction'
- $ref: '#/components/schemas/BatchAction'
ActionResponse:
type: object
properties:
id:
type: string
example: bact_075cfdc9-...
session_id:
type: string
seq:
type: integer
type:
type: string
status:
type: string
enum:
- queued
- running
- succeeded
- failed
- unknown
description: POST returns 202 for queued or running actions. Terminal states are succeeded, failed, and unknown
(the execution outcome could not be determined, with error.code=execution_lost). GET returns 200 for both nonterminal
and terminal states.
result:
type:
- object
- 'null'
properties:
url:
type: string
title:
type: string
observation:
type: object
properties:
observation_id:
type: string
url:
type: string
title:
type: string
refs:
type: object
tree:
type: string
truncated:
type: boolean
ref_count:
type: integer
description: Number of refs in the original observation, present on stored observation metadata.
description: Full tree and refs are delivered only in the original successful POST response when completed within
wait_seconds. GET polling and idempotent replays return metadata with an empty tree and refs plus ref_count.
Submit a fresh observe action to obtain usable refs.
artifact:
type: object
properties:
artifact_id:
type: string
content_type:
type: string
size_bytes:
type: integer
results:
type: array
items:
type: object
description: Present only for batch actions.
request:
type: object
description: 'Normalized request metadata; defaults may be materialized and fill values are redacted as {redacted:
true, length: number}, including inside batch actions.'
error:
type:
- object
- 'null'
properties:
code:
type: string
retryable:
type: boolean
description: Null unless an execution failure is recorded. Action failures (policy_denied, stale_observation, stale_ref,
navigation_blocked, timeout, execution_lost, result_too_large) are returned on the action resource with HTTP 200.
An unknown action with execution_lost has retryable=false; inspect session state and reconcile possible effects
before any new action. Separately, a request may return HTTP 503 with a top-level execution_lost error and retryable=true;
that is not proof of safe re-execution.
required:
- code
- retryable
created_at:
type: string
format: date-time
started_at:
type:
- string
- 'null'
format: date-time
completed_at:
type:
- string
- 'null'
format: date-time
required:
- id
- session_id
- seq
- type
- status
- result
- request
- error
- created_at
- started_at
- completed_at
ActionsParticipantsRequest:
type: object
properties:
participants:
description: Either a list of participant id to perform the action on, or the keyword "all" to perform the action
on all participant.
oneOf:
- type: string
example: all
enum:
- all
- type: array
items:
type: string
format: uuid
example: 7b61621f-62e0-4aad-ab11-9fd19e272e73
exclude:
description: List of participant id to exclude from the action.
type: array
items:
type: string
format: uuid
example: 7b61621f-62e0-4aad-ab11-9fd19e272e73
ActiveCall:
type: object
title: Active Call
required:
- call_control_id
- call_leg_id
- call_session_id
- client_state
- record_type
- call_duration
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768
call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
call_duration: 50
record_type: call
properties:
record_type:
type: string
enum:
- call
example: call
call_session_id:
description: ID that is unique to the call session and can be used to correlate webhook events. Call session is
a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of
a transferred call
type: string
example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1
call_leg_id:
description: ID that is unique to the call and can be used to correlate webhook events
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_control_id:
description: Unique identifier and token for controlling the call.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
call_duration:
description: Indicates the duration of the call in seconds
type: integer
example: 50
ActorClusterResult:
type: object
properties:
cluster_id:
type: string
description: Public region, or unknown when no mapping exists
status:
type: string
success:
type: boolean
error:
type: string
error_code:
type: string
ActorPlacement:
type: object
description: Last deployment fan-out report, not a live probe. Omitted on actor types without a placement-aware deployment.
properties:
policy:
type: string
enum:
- everywhere
- single_site
clusters:
type: array
items:
type: string
description: Public regions with successful deployment
excluded_clusters:
type: array
items:
type: string
unchecked_clusters:
type: array
items:
type: string
partial:
type: boolean
observed_at:
type: string
description: Optional ISO-8601 millisecond timestamp
cluster_results:
type: array
items:
$ref: '#/components/schemas/ActorClusterResult'
AddGroupSuppressionRequest:
type: object
required:
- to
properties:
to:
type: string
description: 'Only `to` is read; all other fields are ignored (`reason: unsubscribe`, `source: manual`, `group_id: `
are forced).'
AddPlanStepsRequest:
properties:
steps:
items:
$ref: '#/components/schemas/CreatePlanStepRequest'
type: array
title: Steps
type: object
required:
- steps
title: AddPlanStepsRequest
AddTagRequest:
properties:
tag:
type: string
title: Tag
type: object
required:
- tag
title: AddTagRequest
Address:
type: object
title: Address
properties:
id:
type: string
description: Uniquely identifies the address.
example: '1293384261075731499'
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: address
customer_reference:
$ref: '#/components/schemas/customer_reference'
first_name:
$ref: '#/components/schemas/first_name'
last_name:
$ref: '#/components/schemas/last_name'
business_name:
$ref: '#/components/schemas/business_name'
phone_number:
$ref: '#/components/schemas/phone_number'
street_address:
$ref: '#/components/schemas/street_address'
extended_address:
$ref: '#/components/schemas/extended_address'
locality:
$ref: '#/components/schemas/locality'
administrative_area:
$ref: '#/components/schemas/administrative_area'
neighborhood:
$ref: '#/components/schemas/neighborhood'
borough:
$ref: '#/components/schemas/borough'
postal_code:
$ref: '#/components/schemas/postal_code'
country_code:
$ref: '#/components/schemas/country_code'
address_book:
$ref: '#/components/schemas/address_book'
validate_address:
$ref: '#/components/schemas/validate_address'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
AddressCreate:
type: object
required:
- first_name
- last_name
- business_name
- street_address
- locality
- country_code
properties:
customer_reference:
$ref: '#/components/schemas/customer_reference'
first_name:
$ref: '#/components/schemas/first_name'
last_name:
$ref: '#/components/schemas/last_name'
business_name:
$ref: '#/components/schemas/business_name'
phone_number:
$ref: '#/components/schemas/phone_number'
street_address:
$ref: '#/components/schemas/street_address'
extended_address:
$ref: '#/components/schemas/extended_address'
locality:
$ref: '#/components/schemas/locality'
administrative_area:
$ref: '#/components/schemas/administrative_area'
neighborhood:
$ref: '#/components/schemas/neighborhood'
borough:
$ref: '#/components/schemas/borough'
postal_code:
$ref: '#/components/schemas/postal_code'
country_code:
$ref: '#/components/schemas/country_code'
address_book:
$ref: '#/components/schemas/address_book'
validate_address:
$ref: '#/components/schemas/validate_address'
AddressSuggestionResponse:
type: object
properties:
data:
type: object
properties:
accepted:
type: boolean
description: Indicates if the address suggestions are accepted.
id:
type: string
format: uuid
description: The UUID of the location.
record_type:
type: string
enum:
- address_suggestion
AdjustmentLine:
type: object
properties:
amount:
type: string
description: Adjustment amount as decimal string
example: '-10.00'
description:
type: string
description: Description of the adjustment
example: Credit for service outage
event_date:
type: string
format: date
description: Date when the adjustment occurred
example: '2025-05-15'
required:
- amount
- description
- event_date
AdvancedOrder:
type: object
title: Advanced Order
properties:
country_code:
type: string
maxLength: 2
minLength: 2
title: Country Code
default: US
comments:
type: string
maxLength: 255
title: Comments
default: ''
quantity:
type: integer
maximum: 10000
minimum: 1
title: Quantity
default: 1
area_code:
type: string
maxLength: 3
title: Area Code
default: ''
phone_number_type:
items:
enum:
- local
- mobile
- toll_free
- shared_cost
- national
- landline
default: ''
features:
items:
enum:
- sms
- mms
- voice
- fax
- emergency
type: array
uniqueItems: true
title: Features
customer_reference:
type: string
title: Customer Reference
default: ''
id:
type: string
format: uuid
title: Id
status:
items:
type: string
enum:
- pending
- processing
- ordered
orders:
items:
type: string
format: uuid
type: array
uniqueItems: true
title: Orders
requirement_group_id:
type: string
format: uuid
title: Requirement Group ID
description: The ID of the requirement group associated with this advanced order
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
AdvancedOrderRequest:
properties:
country_code:
type: string
maxLength: 2
minLength: 2
title: Country Code
default: US
comments:
type: string
maxLength: 255
title: Comments
default: ''
quantity:
type: integer
maximum: 10000
minimum: 1
title: Quantity
default: 1
area_code:
type: string
maxLength: 3
title: Area Code
default: ''
phone_number_type:
type: string
enum:
- local
- mobile
- toll_free
- shared_cost
- national
- landline
default: local
features:
items:
enum:
- sms
- mms
- voice
- fax
- emergency
type: array
uniqueItems: true
title: Features
customer_reference:
type: string
title: Customer Reference
default: ''
requirement_group_id:
type: string
format: uuid
title: Requirement Group ID
description: The ID of the requirement group to associate with this advanced order
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
type: object
title: AdvancedOrderRequest
AgentBasicsConfiguration:
type: object
additionalProperties: false
description: Basic agent identity and contact information. At least one complete phone, website, or email contact is
required.
properties:
description:
type: string
minLength: 1
maxLength: 100
logo_url:
$ref: '#/components/schemas/HttpUrl'
hero_url:
$ref: '#/components/schemas/HttpUrl'
brand_color:
type: string
pattern: ^#(?:[0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$
privacy_policy_url:
$ref: '#/components/schemas/HttpUrl'
terms_and_conditions_url:
$ref: '#/components/schemas/HttpUrl'
phone_number:
oneOf:
- $ref: '#/components/schemas/AgentPhoneContact'
- type: 'null'
website:
oneOf:
- $ref: '#/components/schemas/AgentWebsiteContact'
- type: 'null'
email:
oneOf:
- $ref: '#/components/schemas/AgentEmailContact'
- type: 'null'
anyOf:
- required:
- phone_number
properties:
phone_number:
$ref: '#/components/schemas/AgentPhoneContact'
- required:
- website
properties:
website:
$ref: '#/components/schemas/AgentWebsiteContact'
- required:
- email
properties:
email:
$ref: '#/components/schemas/AgentEmailContact'
required:
- description
- logo_url
- hero_url
- brand_color
- privacy_policy_url
- terms_and_conditions_url
AgentCampaignConfiguration:
type: object
additionalProperties: false
properties:
company_overview:
type: string
minLength: 1
maxLength: 2000
agent_overview:
type:
- string
- 'null'
minLength: 1
maxLength: 2000
interactions:
type: array
items:
$ref: '#/components/schemas/AgentInteraction'
message_examples:
type: array
items:
type: string
minLength: 1
maxLength: 2000
consent_settings:
oneOf:
- $ref: '#/components/schemas/AgentConsentConfiguration'
- type: 'null'
additional_information:
type:
- string
- 'null'
minLength: 1
maxLength: 2000
required:
- company_overview
AgentConfiguration:
type: object
additionalProperties: false
properties:
basics:
$ref: '#/components/schemas/AgentBasicsConfiguration'
campaign:
oneOf:
- $ref: '#/components/schemas/AgentCampaignConfiguration'
- type: 'null'
testing:
oneOf:
- $ref: '#/components/schemas/AgentTestingConfiguration'
- type: 'null'
required:
- basics
AgentConsentConfiguration:
type: object
propertyNames:
enum:
- opt_in_methods
- call_to_action
- call_to_action_url
- call_to_action_media_url
- double_opt_in
- double_opt_in_message
- opt_in_message
- help_response
- opt_out_response
properties:
opt_in_methods:
type: array
minItems: 1
items:
$ref: '#/components/schemas/AgentOptInMethod'
call_to_action:
type: string
minLength: 1
maxLength: 2000
call_to_action_url:
oneOf:
- $ref: '#/components/schemas/HttpUrl'
- type: 'null'
description: Required when an opt-in method is `WEBSITE`.
call_to_action_media_url:
oneOf:
- $ref: '#/components/schemas/HttpUrl'
- type: 'null'
description: Required when an opt-in method is `WEBSITE` or `MOBILE_APP`.
double_opt_in:
type: boolean
double_opt_in_message:
type:
- string
- 'null'
minLength: 1
maxLength: 2000
description: Required when double_opt_in is true.
opt_in_message:
type: string
minLength: 1
maxLength: 2000
help_response:
type: string
minLength: 1
maxLength: 2000
opt_out_response:
type: string
minLength: 1
maxLength: 2000
required:
- opt_in_methods
- call_to_action
- double_opt_in
- opt_in_message
- help_response
- opt_out_response
not:
anyOf:
- properties:
opt_in_methods:
contains:
properties:
method_type:
const: WEBSITE
required:
- method_type
required:
- opt_in_methods
anyOf:
- not:
properties:
call_to_action_url: {}
required:
- call_to_action_url
- properties:
call_to_action_url:
type: 'null'
- not:
properties:
call_to_action_media_url: {}
required:
- call_to_action_media_url
- properties:
call_to_action_media_url:
type: 'null'
- properties:
opt_in_methods:
contains:
properties:
method_type:
const: MOBILE_APP
required:
- method_type
required:
- opt_in_methods
anyOf:
- not:
properties:
call_to_action_media_url: {}
required:
- call_to_action_media_url
- properties:
call_to_action_media_url:
type: 'null'
- properties:
double_opt_in:
const: true
required:
- double_opt_in
anyOf:
- not:
properties:
double_opt_in_message: {}
required:
- double_opt_in_message
- properties:
double_opt_in_message:
type: 'null'
AgentCreateRequest:
type: object
additionalProperties: false
properties:
brand_id:
type: string
format: uuid
display_name:
type: string
minLength: 1
maxLength: 40
use_case:
$ref: '#/components/schemas/AgentUseCase'
profile_id:
type:
- string
- 'null'
maxLength: 36
description: A Messaging Profile owned by the authenticated organization. When omitted, the agent inherits the brand
profile.
hosting_region:
type:
- string
- 'null'
maxLength: 32
configuration:
$ref: '#/components/schemas/AgentConfiguration'
required:
- brand_id
- display_name
- use_case
- configuration
example:
brand_id: 11111111-1111-4111-8111-111111111111
display_name: Acme Order Updates
use_case: TRANSACTIONAL
configuration:
basics:
description: Order confirmations and delivery updates
logo_url: https://www.example.com/rcs/logo.png
hero_url: https://www.example.com/rcs/hero.png
brand_color: '#123456'
privacy_policy_url: https://www.example.com/privacy
terms_and_conditions_url: https://www.example.com/terms
email:
address: support@example.com
label: Support
AgentEmailContact:
type: object
additionalProperties: false
properties:
address:
type: string
format: email
minLength: 3
maxLength: 254
pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$
label:
type: string
minLength: 1
maxLength: 25
required:
- address
- label
AgentInput:
type: object
description: Third-party reseller / partner managing the enterprise's phone numbers on its behalf, such as a call center
(BPO) acting for a client. Omit when the enterprise manages its own numbers.
required:
- legal_name
- street_address
- city
- administrative_area
- postal_code
- country
- contact_name
- contact_title
- contact_email
- contact_phone
properties:
legal_name:
type: string
maxLength: 200
description: The legal name of the third-party partner or reseller managing these numbers on your behalf.
dba:
type: string
nullable: true
maxLength: 200
description: The trade name (Doing Business As) the partner operates under, if different from its legal name. Leave
blank if it does not apply.
street_address:
type: string
maxLength: 255
description: The street address of the partner, including the building number and street name.
extended_address:
type: string
nullable: true
maxLength: 255
description: An optional second address line for the partner, such as a suite, unit, or floor. Leave blank if it
does not apply.
city:
type: string
maxLength: 120
description: The city of the partner's address.
administrative_area:
type: string
maxLength: 120
description: The state or province of the partner's address, as its code, for example IL or ON.
postal_code:
type: string
maxLength: 30
description: The postal or ZIP code of the partner's address.
country:
type: string
minLength: 2
maxLength: 2
description: The two-letter country code of the partner's address, for example US.
example: US
contact_name:
type: string
maxLength: 200
description: The name of a contact person at the partner.
contact_title:
type: string
maxLength: 200
description: The job title of the contact person at the partner.
contact_email:
type: string
format: email
description: The email address of the contact person at the partner.
contact_phone:
type: string
maxLength: 30
description: The phone number of the contact person at the partner, in E.164 format, for example +13125550000.
example: '+13125550000'
AgentInteraction:
type: object
propertyNames:
enum:
- interaction_type
- description
properties:
interaction_type:
$ref: '#/components/schemas/AgentInteractionType'
description:
type:
- string
- 'null'
minLength: 1
maxLength: 2000
description: Required when interaction_type is `OTHER`.
required:
- interaction_type
allOf:
- if:
properties:
interaction_type:
const: OTHER
required:
- interaction_type
then:
properties:
description:
type: string
minLength: 1
maxLength: 2000
required:
- description
AgentInteractionType:
type: string
enum:
- TRANSACTIONAL_UPDATES
- CUSTOMER_SUPPORT
- LOYALTY_OR_REWARD
- MARKETING_OR_PROMOTIONAL
- ACCOUNT_ALERTS
- TWO_WAY_CONVERSATION
- OTHER
AgentLaunchCampaignConfiguration:
allOf:
- $ref: '#/components/schemas/AgentCampaignConfiguration'
- type: object
properties:
agent_overview:
type: string
minLength: 1
maxLength: 2000
interactions:
type: array
minItems: 1
items:
$ref: '#/components/schemas/AgentInteraction'
message_examples:
type: array
minItems: 3
items:
type: string
minLength: 1
maxLength: 2000
consent_settings:
$ref: '#/components/schemas/AgentConsentConfiguration'
required:
- agent_overview
- interactions
- message_examples
- consent_settings
AgentLaunchRequest:
type: object
additionalProperties: false
properties:
campaign:
$ref: '#/components/schemas/AgentLaunchCampaignConfiguration'
testing:
$ref: '#/components/schemas/AgentTestingConfiguration'
required:
- campaign
- testing
example:
campaign:
company_overview: Acme provides online retail services.
agent_overview: The agent sends order confirmations and delivery updates.
interactions:
- interaction_type: TRANSACTIONAL_UPDATES
message_examples:
- Your Acme order is confirmed.
- Your Acme order has shipped.
- Your Acme order was delivered.
consent_settings:
opt_in_methods:
- method_type: WEBSITE
call_to_action: Select RCS updates during checkout.
call_to_action_url: https://www.example.com/checkout
call_to_action_media_url: https://www.example.com/rcs/opt-in.png
double_opt_in: false
opt_in_message: You are subscribed to Acme order updates.
help_response: Contact support@example.com for help.
opt_out_response: You will receive no more messages.
testing:
test_url: https://www.example.com/rcs/test-video
additional_information: Demonstrates START, STOP, HELP, and an order-status interaction.
AgentOptInMethod:
type: object
propertyNames:
enum:
- method_type
- description
properties:
method_type:
$ref: '#/components/schemas/AgentOptInMethodType'
description:
type:
- string
- 'null'
minLength: 1
maxLength: 2000
description: Required when method_type is `OTHER`.
required:
- method_type
allOf:
- if:
properties:
method_type:
const: OTHER
required:
- method_type
then:
properties:
description:
type: string
minLength: 1
maxLength: 2000
required:
- description
AgentOptInMethodType:
type: string
enum:
- SMS
- WEBSITE
- MOBILE_APP
- QR_CODE
- SALE_POINT
- OTHER
AgentPhoneContact:
type: object
additionalProperties: false
properties:
number:
type: string
maxLength: 16
pattern: ^\+[1-9][0-9]{1,14}$
label:
type: string
minLength: 1
maxLength: 25
required:
- number
- label
AgentResponse:
type: object
additionalProperties: false
properties:
agent_id:
type: string
format: uuid
brand_id:
type: string
format: uuid
display_name:
type: string
use_case:
$ref: '#/components/schemas/AgentUseCase'
status:
$ref: '#/components/schemas/AgentState'
profile_id:
type:
- string
- 'null'
basics_status:
oneOf:
- $ref: '#/components/schemas/AgentSubmissionStatus'
- type: 'null'
campaign_status:
oneOf:
- $ref: '#/components/schemas/AgentSubmissionStatus'
- type: 'null'
testing_status:
oneOf:
- $ref: '#/components/schemas/AgentSubmissionStatus'
- type: 'null'
billing_category:
oneOf:
- $ref: '#/components/schemas/BillingCategory'
- type: 'null'
hosting_region:
type:
- string
- 'null'
configuration:
$ref: '#/components/schemas/AgentConfiguration'
carrier_approvals:
type: array
items:
$ref: '#/components/schemas/CarrierApprovalResponse'
test_devices:
type: array
items:
$ref: '#/components/schemas/TestDeviceResponse'
capabilities:
$ref: '#/components/schemas/CapabilitiesResponse'
required:
- agent_id
- brand_id
- display_name
- use_case
- status
- profile_id
- basics_status
- campaign_status
- testing_status
- billing_category
- hosting_region
- configuration
- carrier_approvals
- test_devices
- capabilities
example:
agent_id: 22222222-2222-4222-8222-222222222222
brand_id: 11111111-1111-4111-8111-111111111111
display_name: Acme Order Updates
use_case: TRANSACTIONAL
status: SUBMITTED
profile_id: 40000000-0000-0000-0000-000000000001
basics_status: SUBMITTED
campaign_status: null
testing_status: null
billing_category: NON_CONVERSATIONAL
hosting_region: null
configuration:
basics:
description: Order confirmations and delivery updates
logo_url: https://www.example.com/rcs/logo.png
hero_url: https://www.example.com/rcs/hero.png
brand_color: '#123456'
privacy_policy_url: https://www.example.com/privacy
terms_and_conditions_url: https://www.example.com/terms
email:
address: support@example.com
label: Support
campaign: null
testing: null
carrier_approvals: []
test_devices: []
capabilities:
brand_entity: true
brand_verification: true
submission_sections: true
distinct_launch_phase: false
per_carrier_approval: false
templates: false
campaigns: false
vendor_webhooks: false
invite_test_devices: false
AgentState:
type: string
enum:
- CREATED
- SUBMITTED
- VERIFYING
- VERIFIED
- LAUNCHING
- LAUNCHED
- LIVE
- REJECTED
- FAILED
AgentSubmissionStatus:
type: string
enum:
- SUBMITTED
- APPROVED
- REJECTED
AgentTestingConfiguration:
type: object
additionalProperties: false
properties:
test_url:
$ref: '#/components/schemas/HttpUrl'
description: A publicly accessible test video or evidence URL.
message_id:
type:
- string
- 'null'
minLength: 1
maxLength: 255
additional_information:
type:
- string
- 'null'
minLength: 1
maxLength: 2000
required:
- test_url
AgentUpdateRequest:
type: object
additionalProperties: false
minProperties: 1
properties:
display_name:
type: string
minLength: 1
maxLength: 40
use_case:
$ref: '#/components/schemas/AgentUseCase'
profile_id:
type: string
maxLength: 36
hosting_region:
type: string
maxLength: 32
configuration:
$ref: '#/components/schemas/AgentConfiguration'
example:
display_name: Acme Delivery Updates
AgentUseCase:
type: string
enum:
- MULTI_USE
- PROMOTIONAL
- TRANSACTIONAL
- OTP
AgentWebsiteContact:
type: object
additionalProperties: false
properties:
url:
$ref: '#/components/schemas/HttpUrl'
label:
type: string
minLength: 1
maxLength: 25
required:
- url
- label
AiTestMetric:
type: object
properties:
id:
type: integer
slug:
type:
- string
- 'null'
description: Stable identifier of a built-in metric.
project:
type:
- integer
- 'null'
agent:
type:
- integer
- 'null'
agents:
type: array
items:
type: integer
description: Test agent IDs the metric is attached to.
agent_names:
type: array
items:
type: string
name:
type: string
description:
type: string
function_name:
type:
- string
- 'null'
description: Built-in evaluation function used by custom_code metrics.
type:
type: string
description: 'How the metric is evaluated: custom_code or llm_judge.'
eval_type:
type: string
description: 'What the metric scores: numeric, continuous_qualitative, or binary_workflow_adherence.'
enum_values:
type: array
items:
type: string
description: Allowed values for qualitative enum metrics.
audio_enabled:
type: boolean
observability_enabled:
type: boolean
simulation_enabled:
type: boolean
sampling_enabled:
type: boolean
sample_rate:
type:
- number
- 'null'
prompt:
type: string
description: Judge prompt used by llm_judge metrics.
display_order:
type: integer
evaluation_trigger:
type: string
trigger_type:
type: string
evaluation_trigger_prompt:
type: string
evaluation_trigger_custom_code:
type: string
priority_assignment_prompt:
type: string
configuration:
type:
- object
- 'null'
additionalProperties: true
overall_score:
type:
- number
- string
total_score:
type:
- number
- string
kb_file_ids:
type: array
items:
type: integer
knowledge_base_files:
type: array
items:
type: string
metric_cost:
type: number
alert_type:
type: string
significant_change_alert_status:
type: string
significant_change_alert_direction:
type: string
window_size:
type: integer
description: Sliding window size the alert status is computed over.
std_multiplier:
type: number
description: Standard-deviation multiplier for significant-change alerts.
ewma_alpha:
type: number
description: Smoothing factor for the alert trend.
add_to_new_agents:
type:
- boolean
- 'null'
description: Whether the metric is attached to newly created test agents by default.
alert_filters:
type:
- object
- 'null'
additionalProperties: true
uses_llm_judge:
type: boolean
user_defined:
type: boolean
required:
- id
- name
- type
- eval_type
example:
id: 266881
slug: ai_interrupting_user
project: 16003
agent: null
agents: []
agent_names: []
name: AI interrupting user
description: Tells if the AI (main agent) interrupted user (testing agent) during the interaction.
function_name: get_main_agent_interruption
type: custom_code
eval_type: numeric
enum_values: []
audio_enabled: false
observability_enabled: true
simulation_enabled: true
sampling_enabled: false
sample_rate: null
prompt: ''
display_order: 1
evaluation_trigger: always
trigger_type: llm_judge
evaluation_trigger_prompt: ''
evaluation_trigger_custom_code: ''
priority_assignment_prompt: ''
configuration: {}
overall_score: 0
total_score: 0
kb_file_ids: []
knowledge_base_files: []
metric_cost: 0.0
alert_type: disabled
significant_change_alert_status: disabled
significant_change_alert_direction: ''
window_size: 50
std_multiplier: 2.0
ewma_alpha: 0.1
add_to_new_agents: true
alert_filters: {}
uses_llm_judge: false
user_defined: false
AiTestMetricListResponse:
type: array
items:
$ref: '#/components/schemas/AiTestMetric'
example:
- id: 266881
slug: ai_interrupting_user
project: 16003
agent: null
agents: []
agent_names: []
name: AI interrupting user
description: Tells if the AI (main agent) interrupted user (testing agent) during the interaction.
function_name: get_main_agent_interruption
type: custom_code
eval_type: numeric
enum_values: []
audio_enabled: false
observability_enabled: true
simulation_enabled: true
sampling_enabled: false
sample_rate: null
prompt: ''
display_order: 1
evaluation_trigger: always
trigger_type: llm_judge
evaluation_trigger_prompt: ''
evaluation_trigger_custom_code: ''
priority_assignment_prompt: ''
configuration: {}
overall_score: 0
total_score: 0
kb_file_ids: []
knowledge_base_files: []
metric_cost: 0.0
alert_type: disabled
significant_change_alert_status: disabled
significant_change_alert_direction: ''
window_size: 50
std_multiplier: 2.0
ewma_alpha: 0.1
add_to_new_agents: true
alert_filters: {}
uses_llm_judge: false
user_defined: false
AiTestsErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
description: Telnyx error code.
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
required:
- code
- title
required:
- errors
AlphanumericSenderId:
type: object
properties:
record_type:
type: string
enum:
- alphanumeric_sender_id
example: alphanumeric_sender_id
id:
type: string
format: uuid
description: Uniquely identifies the alphanumeric sender ID resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
alphanumeric_sender_id:
type: string
description: The alphanumeric sender ID string.
example: MyCompany
organization_id:
type: string
description: The organization that owns this sender ID.
messaging_profile_id:
type: string
format: uuid
description: The messaging profile this sender ID belongs to.
us_long_code_fallback:
type: string
description: A US long code number to use as fallback when sending to US destinations.
example: '+15551234567'
AltBusinessIdType:
title: AltBusinessIdType
enum:
- NONE
- DUNS
- GIIN
- LEI
description: An enumeration.
type: string
AmdDetailRecord:
type: object
properties:
id:
type: string
description: Feature invocation id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
invoked_at:
type: string
description: Feature invocation time
format: date-time
example: '2020-07-01T00:00:00Z'
feature:
type: string
description: Feature name
enum:
- PREMIUM
tags:
type: string
description: User-provided tags
example: tag1,tag2
billing_group_id:
type: string
description: Billing Group id
example: 01977831-abdd-4894-84f3-244385621424
billing_group_name:
type: string
description: Name of the Billing Group specified in billing_group_id
example: Billing group name
connection_id:
type: string
description: Connection id
example: '1684947189014463919'
connection_name:
type: string
description: Connection name
example: Name of the connection with id specified in connection_id field
call_leg_id:
type: string
description: Telnyx UUID that identifies the related call leg
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
call_session_id:
type: string
description: Telnyx UUID that identifies the related call session
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
is_telnyx_billable:
type: boolean
description: Indicates whether Telnyx billing charges might be applicable
example: true
rate:
type: string
description: Currency amount per billing unit used to calculate the Telnyx billing cost
example: '0.002'
rate_measured_in:
type: string
description: Billing unit used to calculate the Telnyx billing cost
example: invocations
cost:
type: string
description: Currency amount for Telnyx billing cost
example: '0.004'
currency:
type: string
description: Telnyx account currency used to describe monetary values, including billing cost
example: USD
record_type:
type: string
example: amd_detail_record
default: amd_detail_record
required:
- record_type
AnchorsiteOverride:
title: Anchorsite Override
type: string
description: '`Latency` directs Telnyx to route media through the site with the lowest round-trip time to the user''s
connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying a site to handle
all media.'
enum:
- Latency
- Chicago, IL
- Ashburn, VA
- San Jose, CA
- Sydney, Australia
- Amsterdam, Netherlands
- London, UK
- Toronto, Canada
- Vancouver, Canada
- Frankfurt, Germany
default: Latency
example: Amsterdam, Netherlands
AnswerRequest:
type: object
title: Answer Request
properties:
assistant:
$ref: '#/components/schemas/CallAssistantRequest'
conversation_relay_config:
$ref: '#/components/schemas/ConversationRelayEmbeddedConfig'
billing_group_id:
description: Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group
ID.
type: string
format: uuid
example: f5586561-8ff0-4291-a0ac-84fe544797bd
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
custom_headers:
description: Custom headers to be added to the SIP INVITE response.
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
preferred_codecs:
type: string
description: The list of comma-separated codecs in a preferred order for the forked media to be received.
enum:
- G722,PCMU,PCMA,G729,OPUS,VP8,H264
example: G722,PCMU,PCMA,G729,OPUS,VP8,H264
sip_headers:
description: SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported.
type: array
example:
- name: User-to-User
value: value
items:
$ref: '#/components/schemas/SipHeader'
sound_modifications:
$ref: '#/components/schemas/SoundModifications'
stream_url:
description: The destination WebSocket address where the stream is going to be delivered.
type: string
example: wss://www.example.com/websocket
stream_track:
description: Specifies which track should be streamed.
type: string
enum:
- inbound_track
- outbound_track
- both_tracks
default: inbound_track
example: both_tracks
stream_codec:
$ref: '#/components/schemas/StreamCodec'
stream_bidirectional_mode:
$ref: '#/components/schemas/StreamBidirectionalMode'
stream_bidirectional_codec:
$ref: '#/components/schemas/StreamBidirectionalCodec'
stream_bidirectional_target_legs:
$ref: '#/components/schemas/StreamBidirectionalTargetLegs'
send_silence_when_idle:
description: Generate silence RTP packets when no transmission available.
type: boolean
default: false
example: true
webhook_url:
description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.
type: string
example: https://www.example.com/server-b/
webhook_url_method:
description: HTTP request type used for `webhook_url`.
default: POST
type: string
enum:
- POST
- GET
example: GET
transcription:
description: Enable standalone call transcription upon call answer. The default value is false. Configure this feature
with `transcription_config`. To configure speech recognition for an AI assistant, use `assistant.transcription`
instead.
type: boolean
default: false
example: true
transcription_config:
$ref: '#/components/schemas/TranscriptionStartRequest'
record:
description: Start recording automatically after an event. Disabled by default.
type: string
enum:
- record-from-answer
example: record-from-answer
record_channels:
description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified.
type: string
enum:
- single
- dual
default: dual
example: single
record_format:
description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified.
type: string
enum:
- wav
- mp3
default: mp3
example: wav
record_max_length:
description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value
is 0. The maximum value is 43200. The default value is 0 (infinite).
type: integer
format: int32
default: 0
example: 1000
record_timeout_secs:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected
when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription
is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is
0 (infinite).
type: integer
format: int32
default: 0
example: 100
record_track:
description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track
is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single
channel).
type: string
example: outbound
default: both
enum:
- both
- inbound
- outbound
record_trim:
description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
enum:
- trim-silence
type: string
example: trim-silence
record_custom_file_name:
description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add
a Unix timestamp suffix.
type: string
minLength: 1
maxLength: 40
example: my_recording_file_name
webhook_urls:
description: A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook
URLs associated with that event type will be called instead of `webhook_url`. Events not mapped here will use
the default `webhook_url`.
type: object
additionalProperties:
type: array
items:
type: string
format: uri
example:
call.hangup:
- https://www.example.com/webhooks/hangup
call.bridge:
- https://www.example.com/webhooks/bridge
webhook_urls_method:
description: HTTP request method to invoke `webhook_urls`.
type: string
enum:
- POST
- GET
default: POST
example: POST
webhook_retries_policies:
description: A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying
the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.
type: object
additionalProperties:
type: object
properties:
retries_ms:
type: array
items:
type: integer
maxItems: 5
description: Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms.
example:
call.hangup:
retries_ms:
- 1000
- 2000
- 5000
deepfake_detection:
description: Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a
detection service that analyzes whether the voice is AI-generated. Results are delivered via the `call.deepfake_detection.result`
webhook.
type: object
required:
- enabled
properties:
enabled:
type: boolean
default: false
description: Whether deepfake detection is enabled.
timeout:
type: integer
format: int32
default: 15
minimum: 5
maximum: 60
description: Maximum time in seconds to wait for a detection result before timing out.
rtp_timeout:
type: integer
format: int32
default: 30
minimum: 5
maximum: 120
description: Maximum time in seconds to wait for RTP audio before timing out. If no audio is received within
this window, detection stops with an error.
example:
assistant:
id: asst_123
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
webhook_url: https://www.example.com/server-b/
webhook_url_method: POST
send_silence_when_idle: true
deepfake_detection:
enabled: true
timeout: 15
rtp_timeout: 30
AnthropicMessageRequest:
properties:
model:
type: string
description: The model to use for generating the response, for example `zai-org/GLM-5.3-Flash` or another model
available from the Telnyx models endpoint.
messages:
type: array
items:
type: object
additionalProperties: true
description: The messages to send to the model, following the [Anthropic Messages API](https://docs.anthropic.com/en/api/messages)
format.
max_tokens:
type: integer
description: The maximum number of tokens to generate in the response.
system:
description: System prompt. Can be a string or an array of content blocks following the Anthropic API format.
oneOf:
- type: string
- type: array
items:
type: object
additionalProperties: true
stream:
type: boolean
default: false
description: Whether to stream the response as Anthropic-format Server-Sent Events.
temperature:
type: number
description: Amount of randomness injected into the response. Ranges from 0 to 1.
top_p:
type: number
description: Nucleus sampling parameter. Use temperature or top_p, but not both.
top_k:
type: integer
description: Top-k sampling parameter. Only sample from the top K options for each subsequent token.
stop_sequences:
type: array
items:
type: string
description: Custom sequences that will cause the model to stop generating.
metadata:
type: object
additionalProperties: true
description: An object describing metadata about the request.
tools:
type: array
items:
type: object
additionalProperties: true
description: Definitions of tools that the model may use, following the Anthropic API format.
tool_choice:
type: object
additionalProperties: true
description: Controls how the model uses tools, following the Anthropic API format.
thinking:
type: object
additionalProperties: true
description: Extended thinking configuration for models that support it. Set `type` to `enabled` to turn on extended
thinking.
api_key_ref:
type: string
description: If you are using an external inference provider, this field allows you to pass along a reference to
your API key. After creating an [integration secret](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
for your API key, pass the secret's `identifier` in this field.
mcp_servers:
type: array
items:
type: object
additionalProperties: true
description: List of MCP (Model Context Protocol) servers to make available to the model.
fallback_config:
type: object
additionalProperties: true
description: Configuration for model fallback behavior when the primary model is unavailable.
billing_group_id:
type: string
format: uuid
description: The billing group ID to associate with this request.
timeout:
type: number
default: 300.0
description: Request timeout in seconds.
max_retries:
type: integer
description: Maximum number of retries for the request.
service_tier:
type: string
description: The service tier to use for this request. Supported values vary by model; use the Telnyx models endpoint
and inspect the model's `service_tiers` field. If omitted, Telnyx-hosted models use `default`.
region:
type: string
enum:
- USA
- EU
- AUS
- UAE
description: 'Optional data-residency region the request should be served from, using the same vocabulary as your
account''s Data Locality setting. Behavior depends on `mode`. Supported for Telnyx-hosted models only: a request
routed to an external provider never passes through Telnyx model routing, so a region cannot be enforced for it.
Omit for today''s latency-based routing.'
mode:
type: string
enum:
- preferred
- strict
default: preferred
description: 'How strictly `region` is applied. `preferred` (the default when `region` is set) tries that region
first and falls back to another when the model cannot be served there, so a request that would have succeeded
still succeeds. `strict` pins the request: it is served from that region or it fails with a 422, never redirected
to another region. Requires `region`.'
type: object
required:
- model
- messages
- max_tokens
title: AnthropicMessageRequest
additionalProperties: true
description: Anthropic Messages-compatible request with Telnyx extensions.
ApplicationName:
title: Application Name
type: string
description: A user-assigned name to help manage the application.
example: call-router
ArithmeticExpression:
description: 'Numeric expression: applies an arithmetic operator to two sub-expressions.
Useful for derived numeric checks, e.g. `cart_total + shipping > 50`.
Both operands should resolve to numbers at runtime.'
example:
left:
name: cart_total
type: variable
op: +
right:
name: shipping_cost
type: variable
type: arithmetic
properties:
left:
$ref: '#/components/schemas/Expression'
op:
description: Arithmetic operator applied to `left` and `right`.
enum:
- +
- '-'
- '*'
- /
- '%'
title: Op
type: string
right:
$ref: '#/components/schemas/Expression'
type:
const: arithmetic
title: Type
type: string
required:
- type
- op
- left
- right
title: ArithmeticExpression
type: object
Artifact:
type: object
properties:
id:
type: string
example: bart_75975c73-...
session_id:
type: string
action_id:
type: string
type:
type: string
content_type:
type: string
size_bytes:
type: integer
checksum:
type: string
created_at:
type: string
format: date-time
download_url:
type: string
description: Signed relative path (starts with /v2/artifact_downloads/). Prepend your API host, e.g. https://api.telnyx.com,
before calling it.
expires_at:
type: string
format: date-time
required:
- id
- session_id
- action_id
- type
- content_type
- size_bytes
- checksum
- created_at
- download_url
- expires_at
ArtifactContent:
type: object
additionalProperties: false
required:
- text
properties:
text:
type: string
AssignProfileToCampaignRequest:
title: AssignProfileToCampaignRequest
required:
- messagingProfileId
type: object
properties:
messagingProfileId:
title: Messagingprofileid
type: string
description: The ID of the messaging profile that you want to link to the specified campaign.
example: 4001767e-ce0f-4cae-9d5f-0d5e636e7809
tcrCampaignId:
title: Tcrcampaignid
type: string
description: The TCR ID of the shared campaign you want to link to the specified messaging profile (for campaigns
not created using Telnyx 10DLC services only). If you supply this ID in the request, do not also include a campaignId.
example: CWZTFH1
campaignId:
title: Campaignid
type: string
description: The ID of the campaign you want to link to the specified messaging profile. If you supply this ID in
the request, do not also include a tcrCampaignId.
example: 4b300178-131c-d902-d54e-72d90ba1620j
AssignProfileToCampaignResponse:
title: AssignProfileToCampaignResponse
required:
- messagingProfileId
- taskId
type: object
properties:
messagingProfileId:
title: Messagingprofileid
type: string
description: The ID of the messaging profile that you want to link to the specified campaign.
example: 4001767e-ce0f-4cae-9d5f-0d5e636e7809
tcrCampaignId:
title: Tcrcampaignid
type: string
description: The TCR ID of the shared campaign you want to link to the specified messaging profile (for campaigns
not created using Telnyx 10DLC services only). If you supply this ID in the request, do not also include a campaignId.
example: CWZTFH1
campaignId:
title: Campaignid
type: string
description: The ID of the campaign you want to link to the specified messaging profile. If you supply this ID in
the request, do not also include a tcrCampaignId.
example: 4b300178-131c-d902-d54e-72d90ba1620j
taskId:
title: Taskid
type: string
description: The ID of the task associated with assigning a messaging profile to a campaign.
example: 667a80f8-b0a9-49d0-b9ab-a7a1bcc45086
AssignmentTaskStatusResponse:
title: AssignmentTaskStatusResponse
required:
- taskId
- status
type: object
properties:
taskId:
title: Taskid
type: string
status:
allOf:
- $ref: '#/components/schemas/10dlc_TaskStatus'
type: string
description: The status of the task associated with assigning a messaging profile to a campaign.
example: pending
createdAt:
title: Createdat
type: string
format: date-time
updatedAt:
title: Updatedat
type: string
format: date-time
Assistant:
type: object
title: Assistant
description: Assistant configuration including choice of LLM, custom instructions, and tools.
properties:
model:
description: The model to be used by the voice assistant.
type: string
default: Qwen/Qwen3-235B-A22B
example: Qwen/Qwen3-235B-A22B
instructions:
description: The system instructions that the voice assistant uses during the gather command
type: string
example: You are a friendly voice assistant.
openai_api_key_ref:
description: 'This is necessary only if the model selected is from OpenAI. You would pass the `identifier` for an
integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
that refers to your OpenAI API Key. Warning: Free plans are unlikely to work with this integration.'
type: string
example: my_openai_api_key
tools:
description: The tools that the voice assistant can use.
type: array
items:
oneOf:
- $ref: '#/components/schemas/BookAppointmentTool'
- $ref: '#/components/schemas/CheckAvailabilityTool'
- $ref: '#/components/schemas/WebhookTool'
- $ref: '#/components/schemas/HangupTool'
- $ref: '#/components/schemas/TransferTool'
- $ref: '#/components/schemas/CallControlRetrievalTool'
discriminator:
propertyName: type
mapping:
book_appointment: '#/components/schemas/BookAppointmentTool'
check_availability: '#/components/schemas/CheckAvailabilityTool'
webhook: '#/components/schemas/WebhookTool'
hangup: '#/components/schemas/HangupTool'
transfer: '#/components/schemas/TransferTool'
retrieval: '#/components/schemas/CallControlRetrievalTool'
AssistantA2AAgent:
type: object
title: AssistantA2AAgent
description: 'A remote agent, reachable over the A2A (Agent2Agent) protocol, that an assistant can delegate to. Tools
are not configured here: at the start of every conversation the agent''s card is fetched and one tool is derived per
skill the card advertises.'
properties:
name:
type: string
maxLength: 43
description: Identifies the agent and seeds the names of the tools derived from its card (`a2a__`).
Characters outside `[A-Za-z0-9_]` are replaced with `_` before the tool name is built, so two agents whose names
differ only in punctuation collide and are rejected.
example: billing_agent
url:
type: string
description: 'The agent''s base URL, or the URL of its agent card. At most 2,048 bytes once UTF-8 encoded. `/.well-known/agent-card.json`
is appended to the path unless it already ends in `.json`. Must be an `http://` or `https://` URL for an externally
reachable host: internal destinations (`localhost`, private and reserved IP ranges, `.local` domains) are rejected,
and the hostname may not contain a `{{...}}` placeholder. Placeholders in the path are allowed.'
example: https://agents.example.com
headers:
type: array
items:
$ref: '#/components/schemas/A2AAgentHeader'
description: Headers sent when fetching this agent's card and on every call made to it. Use them to authenticate
to the agent.
async:
type: boolean
default: false
description: When `true`, the assistant hands the turn straight back to the model and the agent's answer is delivered
into the conversation once it arrives, instead of the caller waiting for it in silence.
timeout_ms:
type: integer
minimum: 1
maximum: 4294967295
description: Total budget, in milliseconds, for one call to this agent, including any time spent polling a task
that is still running. Omit to inherit the assistant's tool timeout.
example: 30000
poll_interval_ms:
type: integer
minimum: 1
maximum: 4294967295
description: How often, in milliseconds, to poll an agent task that has not finished yet. Defaults to 500.
example: 500
messages:
type: array
description: Filler messages spoken while a call to this agent is in progress. `request_start` messages are spoken
immediately when the call begins. `request_response_delayed` messages are spoken after `timing_ms` has elapsed
only if the agent has not answered yet. Filler messages are not used when `async` is `true`.
items:
oneOf:
- title: A2AAgentRequestStartMessage
type: object
required:
- type
- content
properties:
type:
type: string
const: request_start
description: Speak the filler message immediately when the call to the agent begins.
content:
type: string
minLength: 1
description: The text the assistant speaks.
timing_ms:
type: integer
minimum: 100
maximum: 120000
description: An optional delay value. This value is ignored for `request_start` messages.
additionalProperties: false
- title: A2AAgentRequestResponseDelayedMessage
type: object
required:
- type
- content
- timing_ms
properties:
type:
type: string
const: request_response_delayed
description: Speak the filler message only if the agent has not answered yet after `timing_ms`.
content:
type: string
minLength: 1
description: The text the assistant speaks.
timing_ms:
type: integer
minimum: 100
maximum: 120000
description: How long to wait, in milliseconds, before speaking this message.
additionalProperties: false
required:
- name
- url
AssistantChatReq:
properties:
content:
type: string
title: Content
description: The message content sent by the client to the assistant
example: Tell me a joke about cats
name:
type: string
title: Name
description: The optional display name of the user sending the message
example: Charlie
conversation_id:
type: string
title: Conversation Id
description: A unique identifier for the conversation thread, used to maintain context
example: 42b20469-1215-4a9a-8964-c36f66b406f4
stream:
type: boolean
title: Stream
description: 'When true, the response is streamed as Server-Sent Events (`text/event-stream`): `delta` events carry
content fragments as they are generated, a final `done` event carries the full content plus `whatsapp_template`,
and a terminal `error` event reports failures that happen after streaming started. When false (default), the response
is a single JSON object.'
default: false
type: object
required:
- content
- conversation_id
title: AssistantChatReq
AssistantChatResponse:
properties:
content:
type: string
title: Content
description: The assistant's generated response based on the input message and context.
example: Why did the cat sit on the computer? Because it wanted to keep an eye on the mouse!
type: object
required:
- content
title: AssistantChatResponse
AssistantDeletedResponse:
properties:
id:
type: string
title: Id
object:
type: string
title: Object
deleted:
type: boolean
title: Deleted
type: object
required:
- id
- object
- deleted
title: AssistantDeletedResponse
description: 'Aligns with the OpenAI API:
https://platform.openai.com/docs/api-reference/assistants/deleteAssistant'
AssistantIntegration:
type: object
title: AssistantIntegration
description: Reference to a connected integration attached to an assistant. Discover available integrations with `/ai/integrations`
and connected integrations with `/ai/integrations/connections`.
properties:
integration_id:
type: string
description: Catalog integration ID to attach. This is the `id` from the integrations catalog at `/ai/integrations`
(the same value also appears as `integration_id` on entries returned by `/ai/integrations/connections`). It is
**not** the connection-level `id` from `/ai/integrations/connections`.
allowed_list:
type: array
items:
type: string
description: Optional per-assistant allowlist of integration tool names. When omitted or empty, all tools allowed
by the connected integration are available to the assistant.
required:
- integration_id
AssistantMCPServer:
type: object
title: AssistantMCPServer
description: Reference to an MCP server attached to an assistant. Create and manage MCP servers with the `/ai/mcp_servers`
endpoints, then attach them to assistants by ID.
properties:
id:
type: string
description: ID of the MCP server to attach. This must be the `id` of an MCP server returned by the `/ai/mcp_servers`
endpoints.
allowed_tools:
type: array
items:
type: string
description: Optional per-assistant allowlist of MCP tool names. When omitted, the assistant uses the MCP server's
configured `allowed_tools`.
required:
- id
AssistantMessage:
type: object
title: Assistant Message
description: Messages sent by the model in response to user messages.
properties:
role:
description: The role of the messages author, in this case `assistant`.
type: string
enum:
- assistant
content:
description: The contents of the assistant message. Required unless `tool_calls`
type: string
tool_calls:
type: array
description: The tool calls generated by the model, such as function calls.
items:
$ref: '#/components/schemas/ToolCall'
metadata:
$ref: '#/components/schemas/MessageMetadata'
required:
- role
example:
role: assistant
content: Hello, I'm John.
AssistantScheduledCallAttempt:
properties:
attempt_number:
type: integer
title: Attempt Number
attempted_at:
type: string
format: date-time
title: Attempted At
call_status:
type: string
title: Call Status
description: 'Values: busy, canceled, no-answer, ringing, completed, failed, in-progress'
call_duration:
title: Call Duration
type: integer
description: Duration of the call in seconds
telnyx_call_control_id:
title: Telnyx Call Control Id
type: string
type: object
required:
- attempt_number
- attempted_at
- call_status
title: AssistantScheduledCallAttempt
description: One row in `call_attempts` — captures the terminal outcome of a single dispatch.
AssistantSmsChatReq:
properties:
from:
type: string
title: From
to:
type: string
title: To
text:
type: string
title: Text
conversation_metadata:
title: Conversation Metadata
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
type: object
should_create_conversation:
title: Should Create Conversation
type: boolean
type: object
required:
- from
- to
title: AssistantSmsChatReq
AssistantSmsChatResponse:
properties:
conversation_id:
title: Conversation Id
type: string
type: object
title: AssistantSmsChatResponse
AssistantTarget:
description: 'Edge target referencing a different assistant.
When the edge fires, the conversation hands off to `assistant_id`: the
active assistant on the conversation row is rewritten and the new
assistant''s flow starts at its own `start_node_id`. The current turn''s
LLM response is delivered to the user as-is; subsequent turns route
to the new assistant.'
properties:
assistant_id:
description: ID of the assistant the conversation transitions to.
example: assistant-billing
title: Assistant Id
type: string
position:
$ref: '#/components/schemas/NodePosition'
description: Optional canvas coordinates for rendering the target assistant as a node in authoring UIs. Pure presentation
— the runtime ignores it; round-trips so frontends can persist graph layout across reloads. When multiple edges
target the same assistant, each edge's `position` is independent (frontends typically use the first non-null one).
example:
x: 600
y: 80
type:
const: assistant
title: Type
type: string
voice_mode:
default: unified
description: Voice behavior when handing off to the target assistant, mirroring the handoff tool's `voice_mode`.
`unified` (default) keeps the current voice across the handoff; `distinct` lets the target assistant speak with
its own configured voice. Only applies to assistant targets — node targets override voice via the node's own `voice_settings`.
enum:
- unified
- distinct
title: Voice Mode
type: string
required:
- type
- assistant_id
title: AssistantTarget
type: object
AssistantTestResponse:
properties:
test_id:
type: string
format: uuid
title: Test Id
description: Unique identifier for the assistant test.
example: 123e4567-e89b-12d3-a456-426614174000
name:
type: string
title: Name
description: Human-readable name of the test.
example: Customer Support Bot Test
description:
type: string
title: Description
description: Detailed description of the test's purpose and scope.
telnyx_conversation_channel:
allOf:
- $ref: '#/components/schemas/TelnyxConversationChannel'
description: Communication channel used for test execution.
example: web_chat
destination:
type: string
title: Destination
description: Target destination for test conversations.
max_duration_seconds:
type: integer
title: Max Duration Seconds
description: Maximum allowed duration for test execution in seconds.
test_suite:
type: string
title: Test Suite
description: Test suite grouping for organizational purposes.
instructions:
type: string
title: Instructions
description: Detailed test scenario instructions and objectives.
rubric:
items:
type: object
required:
- name
- criteria
properties:
name:
type: string
description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity.
criteria:
type: string
description: Specific guidance on how to assess the assistant’s performance for this rubric item.
additionalProperties: false
type: array
title: Rubric
description: Evaluation criteria used to assess test performance.
example:
- criteria: Responds within 30 seconds
name: Response Time
created_at:
type: string
format: date-time
title: Created At
description: Timestamp when the test was created.
example: '2024-01-16T09:00:00Z'
type: object
required:
- test_id
- name
- telnyx_conversation_channel
- rubric
- created_at
title: AssistantTestResponse
description: 'Response model containing complete assistant test information.
Returns all test configuration details including evaluation criteria,
scheduling, and metadata. Used when retrieving individual tests or
after creating/updating tests.'
AssistantTools:
description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids`
to attach shared tools created with the AI Tools endpoints. On update, a sent `tools` array fully replaces the assistant's
inline tools; omit the field to leave them unchanged. Each tool type except `function`, `webhook`, and `client_side_tool`
allows at most one instance per assistant, counted across inline `tools` and shared `tool_ids` combined.
type: array
items:
oneOf:
- $ref: '#/components/schemas/FunctionTool'
- $ref: '#/components/schemas/inference-embedding_WebhookTool'
- $ref: '#/components/schemas/ClientSideTool'
- $ref: '#/components/schemas/RetrievalTool'
- $ref: '#/components/schemas/HandoffTool'
- $ref: '#/components/schemas/inference-embedding_HangupTool'
- $ref: '#/components/schemas/inference-embedding_TransferTool'
- $ref: '#/components/schemas/InviteTool'
- $ref: '#/components/schemas/SIPReferTool'
- $ref: '#/components/schemas/DTMFTool'
- $ref: '#/components/schemas/SendMessageTool'
- $ref: '#/components/schemas/SkipTurnTool'
- $ref: '#/components/schemas/VisionTool'
- $ref: '#/components/schemas/PayTool'
- $ref: '#/components/schemas/UpdateDynamicVariablesTool'
AssistantWhatsappChatReq:
properties:
from:
type: string
title: From
description: WhatsApp number on your account to send from, in E.164 format. Its messaging profile must have this
assistant configured.
to:
type: string
title: To
description: Customer to message, as an E.164 phone number or a WhatsApp business-scoped user ID (BSUID).
content:
type: string
title: Content
description: Instruction for the assistant, including the values for the template variables, e.g. `Send the login
verification code 482913 to the customer.`
conversation_metadata:
title: Conversation Metadata
description: Metadata stored on the conversation. Keys starting with `telnyx_` and the `assistant_id` key are reserved.
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
type: object
type: object
required:
- from
- to
- content
title: AssistantWhatsappChatReq
AssistantWhatsappChatResponse:
properties:
conversation_id:
title: Conversation Id
type: string
description: ID of the conversation created for this WhatsApp chat.
message_id:
title: Message Id
type: string
description: ID of the WhatsApp template message that was sent.
type: object
required:
- conversation_id
- message_id
title: AssistantWhatsappChatResponse
AssistantsListData:
properties:
data:
items:
$ref: '#/components/schemas/inference-embedding_Assistant'
type: array
title: Data
type: object
required:
- data
title: AssistantsListData
AttachmentRequest:
type: object
properties:
filename:
type: string
description: Attachment filename. Defaults to "attachment" when omitted.
content_type:
type: string
description: MIME content type. Defaults to "application/octet-stream" when omitted.
content:
type: string
description: Attachment content, typically Base64-encoded. Defaults to empty string when omitted.
disposition:
type: string
default: attachment
description: MIME disposition (`attachment` or `inline`).
content_id:
type: string
nullable: true
description: MIME Content-ID used to reference an inline attachment.
AttachmentResponse:
type: object
description: EDR-aligned attachment metadata. The base64 `content` is never returned.
properties:
url:
type: string
format: uri
nullable: true
description: Telnyx-hosted public URL for the attachment content.
sha256:
type: string
nullable: true
description: SHA-256 hex digest of the attachment content.
size_bytes:
type: integer
nullable: true
description: Attachment size in bytes.
filename:
type: string
content_type:
type: string
disposition:
type: string
default: attachment
description: MIME disposition (e.g. `attachment` or `inline`). Runtime passes through the stored value without enforcing
an enum.
content_id:
type: string
nullable: true
description: MIME Content-ID for inline references.
required:
- url
- sha256
- size_bytes
- filename
- content_type
- disposition
- content_id
AudioChunkFrame:
type: object
description: Server-to-client frame containing a base64-encoded audio chunk.
properties:
type:
type: string
const: audio_chunk
description: Frame type identifier.
audio:
type:
- string
- 'null'
description: Base64-encoded audio data. May be `null` for providers that use `drop_concatenated_audio` mode (Telnyx,
Minimax, Resemble) — in that case only streamed chunks carry audio.
text:
type:
- string
- 'null'
description: The text segment that this audio chunk corresponds to.
isFinal:
type: boolean
description: Always `false` for audio chunk frames.
cached:
type: boolean
description: Whether this audio was served from cache.
timeToFirstAudioFrameMs:
type: integer
description: Milliseconds from the start-of-speech request to the first audio frame. Only present on the first audio
chunk of a synthesis request.
AudioTranscriptionRequest:
type: object
properties:
file:
description: 'The audio file object to transcribe, in one of these formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg,
wav, or webm. File uploads are limited to 100 MB. Cannot be used together with `file_url`. Note: the `deepgram/*`
models only support mp3 and wav formats.'
type: string
format: binary
file_url:
description: 'Link to audio file in one of these formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm. Support
for hosted files is limited to 100MB. Cannot be used together with `file`. Note: the `deepgram/*` models only
support mp3 and wav formats.'
type: string
example: https://example.com/file.mp3
model:
description: 'ID of the model to use. `distil-whisper/distil-large-v2` is lower latency but English-only. `openai/whisper-large-v3-turbo`
is multi-lingual but slightly higher latency. The `deepgram/*` models only accept mp3/wav files: `deepgram/nova-3`
covers ~49 languages plus `multi` and `deepgram/nova-2` covers ~33, while the `-medical` variants are tuned for
clinical vocabulary and accept English only (`en` and its regional variants, e.g. `en-US`, `en-GB`). `nvidia/parakeet-v3`
is multilingual with automatic language detection; `omi-health/omi-med-stt-v1` is a medical model, English only.
`reson8/prerecorded` covers 10 languages, returns word timestamps, and labels speakers via `model_config`.'
example: distil-whisper/distil-large-v2
default: distil-whisper/distil-large-v2
type: string
enum:
- distil-whisper/distil-large-v2
- openai/whisper-large-v3-turbo
- deepgram/nova-2
- deepgram/nova-2-medical
- deepgram/nova-3
- deepgram/nova-3-medical
- nvidia/parakeet-v3
- omi-health/omi-med-stt-v1
- reson8/prerecorded
response_format:
description: The format of the transcript output. Use `verbose_json` to take advantage of timestamps.
example: json
type: string
default: json
enum:
- json
- verbose_json
timestamp_granularities[]:
description: The timestamp granularities to populate for this transcription. `response_format` must be set verbose_json
to use timestamp granularities. Currently `segment` is supported.
example: segment
type: string
enum:
- segment
language:
type: string
description: The language of the audio to be transcribed. `deepgram/nova-3` supports ~49 languages plus `multi`,
and `deepgram/nova-2` supports ~33 plus `multi`; the `-medical` variants are English only (`en` and its regional
variants, e.g. `en-US`, `en-GB`). Deepgram models validate on the base language and forward the full tag, so regional
variants such as `de-CH` and `pt-BR` are accepted where the base language is supported; an unsupported language
returns a 400. For `openai/whisper-large-v3-turbo`, supports multiple languages. `distil-whisper/distil-large-v2`
does not support language parameter. `nvidia/parakeet-v3` detects the language automatically; `omi-health/omi-med-stt-v1`
is English only. `reson8/prerecorded` accepts `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es` and `sv` (regional
variants are transcribed as the base language) and detects the language when it is omitted.
example: en-US
model_config:
type: object
description: Additional model-specific configuration parameters. Only allowed with the `deepgram/*` models and `reson8/prerecorded`.
Sent as a JSON string in multipart requests; for the `deepgram/*` models it is passed through to Deepgram as query
parameters, while `reson8/prerecorded` accepts only `diarize` (speaker labels) and `max_speakers` (1 to 8). Any
other model with `model_config` returns 400. Can include Deepgram-specific options such as `smart_format`, `punctuate`,
`diarize` (speaker labels), `multichannel` (transcribe each channel independently; billed duration is file duration
multiplied by the number of channels), `utterances`, `numerals`, and `language`. If `language` is provided both
as a top-level parameter and in `model_config`, the top-level parameter takes precedence.
additionalProperties: true
example:
smart_format: true
punctuate: true
required:
- model
AudioTranscriptionResponse:
type: object
description: Response fields vary by model. `distil-whisper/distil-large-v2` returns `text`, `duration`, and `segments`
in `verbose_json` mode. `openai/whisper-large-v3-turbo` returns `text` only. The `deepgram/*` models return `text`
and, depending on `model_config`, may include `words` with per-word timestamps and speaker labels. The Parakeet models
(`nvidia/parakeet-v3`, `omi-health/omi-med-stt-v1`) return `text` only. `reson8/prerecorded` returns `text` and, in
`verbose_json` mode, `duration` and `segments` with `words`; with `diarize`, one segment per speaker turn with speaker
labels.
properties:
text:
type: string
description: The transcribed text for the audio file.
duration:
type: number
description: The duration of the audio file in seconds. Returned by `distil-whisper/distil-large-v2` and the `deepgram/*`
models when `response_format` is `verbose_json`. Not returned by `openai/whisper-large-v3-turbo`.
segments:
type: array
description: Segments of the transcribed text and their corresponding details. Returned by `distil-whisper/distil-large-v2`
and the `deepgram/*` models when `response_format` is `verbose_json`; Deepgram segments also carry nested `words`
and `speakers`. Not returned by `openai/whisper-large-v3-turbo`.
items:
$ref: '#/components/schemas/AudioTranscriptionResponseSegments'
words:
type: array
description: Word-level timestamps and optional speaker labels. Only returned by the `deepgram/*` models when word-level
output is enabled via `model_config`.
items:
$ref: '#/components/schemas/AudioTranscriptionResponseWord'
required:
- text
AudioTranscriptionResponseSegments:
type: object
properties:
id:
type: number
description: Unique identifier of the segment.
start:
type: number
description: Start time of the segment in seconds.
end:
type: number
description: End time of the segment in seconds.
text:
type: string
description: Text content of the segment.
words:
type: array
description: Word-level timing detail for this segment. Returned by the `deepgram/*` models when word-level output
is enabled via `model_config`, and by `reson8/prerecorded`.
items:
$ref: '#/components/schemas/AudioTranscriptionResponseWord'
speakers:
type: array
description: Speaker indices heard in this segment. Returned by the `deepgram/*` models and `reson8/prerecorded`
when `diarize` is enabled via `model_config`. With `multichannel`, speakers are numbered per channel from 0, so
identify a speaker by (`channel`, speaker).
items:
type: integer
channel:
type: integer
description: Zero-indexed audio channel of this segment. Returned by the `deepgram/*` models when `multichannel`
is enabled via `model_config` and the file has more than one channel. Segments from all channels are merged in
one list ordered by start time.
required:
- id
- start
- end
- text
AudioTranscriptionResponseWord:
type: object
description: Word-level timing detail. Only present when using a `deepgram/*` model with `model_config` options that
enable word timestamps, or `reson8/prerecorded`.
properties:
word:
type: string
description: The transcribed word.
start:
type: number
description: Start time of the word in seconds.
end:
type: number
description: End time of the word in seconds.
confidence:
type: number
description: Confidence score for the word (0.0 to 1.0).
speaker:
type: integer
description: Speaker index. Only present when diarization is enabled via `model_config`.
speaker_confidence:
type: number
description: Confidence score for the speaker assignment (0.0 to 1.0). Only present when diarization is enabled
via `model_config`.
punctuated_word:
type: string
description: The transcribed word with punctuation and capitalisation applied. Only present when `punctuate` or
`smart_format` is enabled via `model_config`.
required:
- word
- start
- end
AudioVisualizerConfig:
type: object
properties:
color:
type: string
enum:
- verdant
- twilight
- bloom
- mystic
- flare
- glacier
description: The color theme for the audio visualizer.
preset:
type: string
description: The preset style for the audio visualizer.
title: AudioVisualizerConfig
AuditEventChanges:
type: object
title: Audit Event Changes
description: Details of the changes made to a resource.
properties:
field:
type: string
description: The name of the field that was changed. May use the dot notation to indicate nested fields.
example: nested.field.name
to:
anyOf:
- type: string
- type: number
- type: boolean
- type: object
additionalProperties: true
- type: array
items: {}
- type: 'null'
description: The new value of the field. Can be any JSON type.
example: 12345
from:
anyOf:
- type: string
- type: number
- type: boolean
- type: object
additionalProperties: true
- type: array
items: {}
- type: 'null'
description: The previous value of the field. Can be any JSON type.
example: 54321
AuditLog:
type: object
title: Audit Log Entry
properties:
id:
type: string
format: uuid
description: Unique identifier for the audit log entry.
example: 550e8400-e29b-41d4-a716-446655440000
user_id:
type: string
format: uuid
description: Unique identifier for the user who made the change.
example: 550e8400-e29b-41d4-a716-446655440001
record_type:
type: string
description: The type of the resource being audited.
example: audit_event
resource_id:
type: string
description: Unique identifier for the resource that was changed.
example: 550e8400-e29b-41d4-a716-446655440002
alternate_resource_id:
type:
- string
- 'null'
description: An alternate identifier for a resource which may be considered unique enough to identify the resource
but is not the primary identifier for the resource. For example, this field could be used to store the phone number
value for a phone number when the primary database identifier is a separate distinct value.
example: '+14155551234'
change_made_by:
type: string
enum:
- telnyx
- account_manager
- account_owner
- organization_member
description: Indicates if the change was made by Telnyx on your behalf, the organization owner, a member of your
organization, or in the case of managed accounts, the account manager.
example: organization_member
changes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/AuditEventChanges'
description: Details of the changes made to the resource.
example:
- field: field.name
to: old value
from: new value
organization_id:
type: string
format: uuid
description: Unique identifier for the organization that owns the resource.
example: 550e8400-e29b-41d4-a716-446655440003
change_type:
type: string
description: The type of change that occurred.
example: update
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the change occurred.
example: '2026-01-03T00:00:00Z'
AuditLogList:
type: object
title: Audit Log List
properties:
data:
type: array
items:
$ref: '#/components/schemas/AuditLog'
meta:
$ref: '#/components/schemas/audit-logs_PaginationMeta'
AuditLogsErrors:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/audit-logs_Error'
AuthenticationMethod:
type: string
enum:
- token
- certificate
default: token
description: Authentication method used when connecting to the external LLM endpoint.
title: AuthenticationMethod
AuthenticationProvider:
type: object
title: AuthenticationProvider
properties:
id:
type: string
format: uuid
description: Uniquely identifies the authentication provider.
example: 35146afd-df93-4963-b1e9-1a085e2ae874
record_type:
type: string
description: Identifies the type of the resource.
example: authentication_provider
name:
$ref: '#/components/schemas/name'
short_name:
$ref: '#/components/schemas/short_name'
organization_id:
$ref: '#/components/schemas/organization_id'
active:
$ref: '#/components/schemas/active'
activated_at:
type: string
description: ISO 8601 formatted date indicating when the authentication provider was activated.
format: date-time
example: '2018-02-02T22:25:27.521Z'
settings:
type: object
description: The settings associated with the authentication provider.
properties:
assertion_consumer_service_url:
type: string
description: The Assertion Consumer Service URL for the service provider (Telnyx).
format: uri
example: https://api.telnyx.com/sso/saml/auth/myorg
service_provider_entity_id:
type: string
description: The Entity ID for the service provider (Telnyx).
format: uri
example: https://api.telnyx.com/sso/saml/metadata/myorg
service_provider_login_url:
type: string
description: The login URL for the service provider (Telnyx). Users navigate to this URL to initiate SSO login.
format: uri
example: https://api.telnyx.com/sso/myorg
idp_entity_id:
type: string
description: The Entity ID for the identity provider (IdP).
format: uri
example: https://myorg.myidp.com/saml/metadata
idp_sso_target_url:
type: string
description: The SSO target url for the identity provider (IdP).
format: uri
example: https://myorg.myidp.com/trust/saml2/http-post/sso
idp_cert_fingerprint:
type: string
description: The certificate fingerprint for the identity provider (IdP)
example: 13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7
idp_cert_fingerprint_algorithm:
type: string
description: The algorithm used to generate the identity provider's (IdP) certificate fingerprint
enum:
- sha1
- sha256
- sha384
- sha512
default: sha1
example: sha256
name_identifier_format:
type: string
description: The name identifier format associated with the authentication provider. This must be the same for
both the Identity Provider (IdP) and the service provider (Telnyx).
example: urn:oasis:names:tc:SAML:1.1:nameid-format
idp_slo_target_url:
type: string
description: The Single Logout (SLO) target URL for the identity provider (IdP).
format: uri
example: https://myorg.myidp.com/trust/saml2/http-redirect/slo
idp_certificate:
type: string
description: The full X.509 certificate for the identity provider (IdP).
example: '-----BEGIN CERTIFICATE-----
MIIC...
-----END CERTIFICATE-----'
idp_attribute_names:
type: object
description: Mapping of SAML attribute names used by the identity provider (IdP).
example:
email: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
provision_groups:
type: boolean
description: Whether group provisioning is enabled for this authentication provider.
example: false
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
format: date-time
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
format: date-time
example: '2018-02-02T22:25:27.521Z'
AuthenticationProviderCreate:
type: object
required:
- name
- short_name
- settings
properties:
name:
$ref: '#/components/schemas/name'
short_name:
$ref: '#/components/schemas/short_name'
active:
$ref: '#/components/schemas/active'
settings:
$ref: '#/components/schemas/settings'
settings_url:
$ref: '#/components/schemas/settings_url'
AuthorizationServerMetadata:
type: object
properties:
issuer:
type: string
format: uri
description: Authorization server issuer URL
token_endpoint:
type: string
format: uri
description: Token endpoint URL
introspection_endpoint:
type: string
format: uri
description: Token introspection endpoint URL
jwks_uri:
type: string
format: uri
description: JWK Set endpoint URL
registration_endpoint:
type: string
format: uri
description: Dynamic client registration endpoint URL
authorization_endpoint:
type: string
format: uri
description: Authorization endpoint URL
grant_types_supported:
type: array
items:
type: string
description: Supported grant types
code_challenge_methods_supported:
type: array
items:
type: string
description: Supported PKCE code challenge methods
response_types_supported:
type: array
items:
type: string
description: Supported response types
token_endpoint_auth_methods_supported:
type: array
items:
type: string
description: Supported token endpoint authentication methods
scopes_supported:
type: array
items:
type: string
description: Supported OAuth scopes
example:
- admin
AutoRechargePref:
type: object
properties:
id:
type: string
example: '1524126400473204723'
description: The unique identifier for the auto recharge preference.
record_type:
type: string
example: auto_recharge_pref
description: The record type.
threshold_amount:
type: string
example: '104.00'
description: The threshold amount at which the account will be recharged.
x-format: decimal
recharge_amount:
type: string
example: '104.00'
description: The amount to recharge the account, the actual recharge amount will be the amount necessary to reach
the threshold amount plus the recharge amount.
x-format: decimal
enabled:
type: boolean
example: true
description: Whether auto recharge is enabled.
invoice_enabled:
type: boolean
example: true
preference:
type: string
enum:
- credit_paypal
- ach
example: credit_paypal
description: The payment preference for auto recharge.
AutoRechargePrefRequest:
type: object
properties:
threshold_amount:
type: string
example: '104.00'
description: The threshold amount at which the account will be recharged.
x-format: decimal
recharge_amount:
type: string
example: '104.00'
description: The amount to recharge the account, the actual recharge amount will be the amount necessary to reach
the threshold amount plus the recharge amount.
x-format: decimal
enabled:
type: boolean
example: true
description: Whether auto recharge is enabled.
invoice_enabled:
type: boolean
example: true
preference:
type: string
enum:
- credit_paypal
- ach
example: credit_paypal
description: The payment preference for auto recharge.
AutoRespConfigCreateSchema:
title: AutoRespConfigCreateSchema
required:
- op
- keywords
- country_code
type: object
properties:
op:
title: Op
enum:
- start
- stop
- info
type: string
keywords:
title: Keywords
type: array
items:
type: string
example:
- keyword1
- keyword2
resp_text:
title: Resp Text
type: string
example: Thank you for your message
country_code:
title: Country Code
type: string
example: US
AutorespConfigResponseSchema:
title: AutorespConfigResponseSchema
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/AutorespConfigSchema'
AutorespConfigSchema:
title: AutorespConfigSchema
required:
- op
- keywords
- country_code
- id
- created_at
- updated_at
type: object
properties:
op:
title: Op
enum:
- start
- stop
- info
type: string
example: start
keywords:
title: Keywords
type: array
items:
type: string
example:
- START
- BEGIN
resp_text:
title: Resp Text
type: string
example: Thank you for subscribing to our service.
country_code:
title: Country Code
type: string
example: '*'
id:
title: Id
type: string
example: b8f9c1c0-5b5a-4b1e-8c1c-0b5a4b1e8c1c
created_at:
title: Created At
type: string
format: date-time
updated_at:
title: Updated At
type: string
format: date-time
AutorespConfigsResponseSchema:
title: AutorespConfigsResponseSchema
description: List of Auto-Response Settings
required:
- data
- meta
type: object
properties:
data:
title: Data
type: array
items:
$ref: '#/components/schemas/AutorespConfigSchema'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
AvailablePhoneNumber:
type: object
properties:
record_type:
type: string
example: available_phone_number
enum:
- available_phone_number
phone_number:
type: string
example: '+19705555098'
vanity_format:
type: string
best_effort:
type: boolean
description: Specifies whether the phone number is an exact match based on the search criteria or not.
example: false
quickship:
type: boolean
description: Specifies whether the phone number can receive calls immediately after purchase or not.
example: true
reservable:
type: boolean
description: Specifies whether the phone number can be reserved before purchase or not.
example: true
region_information:
type: array
items:
$ref: '#/components/schemas/RegionInformation'
cost_information:
$ref: '#/components/schemas/CostInformation'
features:
type: array
items:
$ref: '#/components/schemas/Feature'
example:
record_type: available_phone_number
phone_number: '+19705555098'
vanity_format: ''
best_effort: false
quickship: true
reservable: true
region_information:
- region_type: country_code
region_name: US
cost_information:
upfront_cost: '3.21'
monthly_cost: '6.54'
currency: USD
features:
- name: sms
- name: voice
AvailablePhoneNumberBlock:
type: object
properties:
record_type:
type: string
example: available_phone_number_block
enum:
- available_phone_number_block
phone_number:
type: string
example: '+19705555000'
range:
type: integer
example: 10
region_information:
type: array
items:
$ref: '#/components/schemas/RegionInformation'
cost_information:
$ref: '#/components/schemas/CostInformation'
features:
type: array
items:
$ref: '#/components/schemas/Feature'
example:
record_type: available_phone_number_block
phone_number: '+19705555000'
range: 10
region_information:
- region_type: country_code
region_name: US
cost_information:
upfront_cost: '3.21'
monthly_cost: '6.54'
currency: USD
features:
- name: sms
- name: voice
AvailablePhoneNumbersMetadata:
type: object
example:
total_results: 100
best_effort_results: 50
properties:
total_results:
type: integer
example: 1
best_effort_results:
type: integer
example: 0
AvailableService:
type: string
title: Available service
enum:
- cloud_vpn
- private_wireless_gateway
- tailscale_subnet_router
- virtual_cross_connect
Avatar:
type: object
additionalProperties: false
required:
- id
- name
- provider
- avatar_type
- hosted
- image_url
properties:
id:
$ref: '#/components/schemas/AvatarId'
name:
type: string
minLength: 1
maxLength: 255
description: Customer-facing avatar name.
example: Customer portrait
provider:
type: string
const: telnyx
description: Avatar provider. The first release supports Telnyx avatars.
example: telnyx
avatar_type:
$ref: '#/components/schemas/AvatarType'
hosted:
type: boolean
const: true
description: Indicates that avatar rendering runs on Telnyx-operated infrastructure.
example: true
image_url:
type: string
format: uri
pattern: ^https://
description: HTTPS image URL suitable for an avatar selection thumbnail. If the URL expires, list or retrieve the
avatar again to refresh it.
example: https://example.com/avatar.png
image_url_expires_at:
type: string
format: date-time
description: Expiration time of `image_url`. Omitted when the URL does not expire.
example: '2026-10-13T15:00:00Z'
suggested_voice_id:
type: string
minLength: 0
maxLength: 255
readOnly: true
description: Optional recommended Telnyx text-to-speech voice for this avatar. An omitted field or empty string
means no recommendation is available. Custom avatars have no suggested voice. It is informational and selecting
the avatar does not automatically change the AI Assistant's configured voice.
example: Telnyx.Ultra.db6b0ed5-d5d3-463d-ae85-518a07d3c2b4
content_type:
$ref: '#/components/schemas/AvatarContentType'
size_bytes:
type: integer
minimum: 1
maximum: 10485760
description: Size of a custom avatar image in bytes.
example: 248512
width_px:
type: integer
minimum: 256
maximum: 8192
description: Decoded width of a custom avatar image.
example: 1920
height_px:
type: integer
minimum: 256
maximum: 8192
description: Decoded height of a custom avatar image.
example: 1080
created_at:
type: string
format: date-time
description: Time when the custom avatar was created.
example: '2026-10-13T14:00:00Z'
updated_at:
type: string
format: date-time
description: Time when the custom avatar was last updated.
example: '2026-10-13T14:00:00Z'
AvatarContentType:
type: string
enum:
- image/jpeg
- image/png
- image/webp
description: MIME type of a custom avatar image.
AvatarError:
type: object
additionalProperties: true
required:
- code
- title
- detail
- meta
properties:
code:
type: string
description: Telnyx error code.
example: '10015'
title:
type: string
description: Short description of the error.
example: Bad Request
detail:
type: string
description: Human-readable details about the error.
example: The request failed because it was not well-formed.
source:
$ref: '#/components/schemas/AvatarErrorSource'
meta:
$ref: '#/components/schemas/AvatarErrorMeta'
AvatarErrorMeta:
type: object
additionalProperties: true
required:
- url
properties:
url:
type: string
format: uri
description: Link to the Telnyx error-code documentation.
example: https://developers.telnyx.com/docs/overview/errors/10027
AvatarErrorResponse:
type: object
required:
- errors
properties:
errors:
type: array
minItems: 1
items:
$ref: '#/components/schemas/AvatarError'
AvatarErrorSource:
type: object
additionalProperties: true
properties:
pointer:
type: string
description: Location of the invalid request value.
example: /image_file
AvatarId:
type: string
minLength: 1
maxLength: 128
pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$
description: Stable identifier returned by the Avatars API. Discover available stock IDs with GET /v2/ai/avatars and
filter[avatar_type]=stock rather than maintaining a fixed list. Custom avatar IDs use the `avatar_` prefix and must
belong to the authenticated organization. The service validates that the selected avatar is available.
example: avatar_0123456789abcdef0123456789abcdef
AvatarListMeta:
type: object
required:
- total_pages
- total_results
- page_number
- page_size
properties:
total_pages:
type: integer
minimum: 0
description: Total number of pages for the current filters.
example: 1
total_results:
type: integer
minimum: 0
description: Total number of matching avatars.
example: 1
page_number:
type: integer
minimum: 1
description: Current page number.
example: 1
page_size:
type: integer
minimum: 1
maximum: 100
description: Maximum number of avatars returned on each page.
example: 20
AvatarListResponse:
type: object
additionalProperties: false
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/Avatar'
meta:
$ref: '#/components/schemas/AvatarListMeta'
AvatarResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
$ref: '#/components/schemas/Avatar'
AvatarSettings:
title: AvatarSettings
description: '**Beta:** Saved Telnyx avatar configuration returned for this assistant.'
oneOf:
- $ref: '#/components/schemas/TelnyxAvatarSettings'
discriminator:
propertyName: provider
mapping:
telnyx: '#/components/schemas/TelnyxAvatarSettings'
AvatarSettingsRequest:
title: AvatarSettingsRequest
description: '**Beta:** Telnyx avatar configuration accepted when creating or updating an assistant. Set `provider`
to `telnyx`.'
oneOf:
- $ref: '#/components/schemas/TelnyxAvatarSettings'
discriminator:
propertyName: provider
mapping:
telnyx: '#/components/schemas/TelnyxAvatarSettings'
AvatarType:
type: string
enum:
- stock
- custom
description: Whether the avatar is provided by Telnyx or was uploaded by the authenticated organization.
AwsAccessKeyId:
description: AWS credentials access key id.
type: string
example: AKIAIOSFODNN7EXAMPLE
AwsProviderParams:
type: object
description: AWS Polly provider-specific parameters.
properties:
language_code:
type: string
description: Language code (e.g. `en-US`, `es-ES`).
text_type:
type: string
description: Input text type.
enum:
- text
- ssml
lexicon_names:
type: array
items:
type: string
description: List of lexicon names to apply.
output_format:
type: string
description: Audio output format.
sample_rate:
type: string
description: Audio sample rate.
AwsSecretAccessKey:
description: AWS secret access key.
type: string
example: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AzureAccountKey:
description: Azure Blob Storage account key.
type: string
example: bPxRfiCYEXAMPLEKEY
AzureAccountName:
description: Azure Blob Storage account name.
type: string
example: my-account
AzureConfigurationData:
type: object
title: Azure Blob Storage Configuration Data
properties:
backend:
type: string
enum:
- azure
description: Storage backend type
bucket:
$ref: '#/components/schemas/Bucket'
account_name:
$ref: '#/components/schemas/AzureAccountName'
account_key:
$ref: '#/components/schemas/AzureAccountKey'
required:
- backend
AzureProviderParams:
type: object
description: Azure Cognitive Services provider-specific parameters.
properties:
language_code:
type: string
description: Language code (e.g. `en-US`).
default: en-US
output_format:
type: string
description: Azure audio output format.
default: audio-24khz-160kbitrate-mono-mp3
text_type:
type: string
description: Input text type. Use `ssml` for SSML-formatted input.
enum:
- text
- ssml
default: text
api_key:
type: string
description: Custom Azure API key. If not provided, the default Telnyx key is used.
region:
type: string
description: Azure region (e.g. `eastus`, `westeurope`).
deployment_id:
type: string
description: Custom Azure deployment ID.
effect:
type: string
description: Azure audio effect to apply.
gender:
type: string
description: Voice gender preference.
AzureTranscriptionLanguage:
title: Azure transcription engine list of languages
type: string
description: Language to use for speech recognition
example: en
default: en
enum:
- af
- am
- ar
- bg
- bn
- bs
- ca
- cs
- cy
- da
- de
- el
- en
- es
- et
- eu
- fa
- fi
- fr
- ga
- gl
- gu
- he
- hi
- hr
- hu
- hy
- id
- is
- it
- ja
- ka
- kk
- km
- kn
- ko
- lo
- lt
- lv
- mk
- ml
- mn
- mr
- ms
- mt
- my
- nb
- ne
- nl
- pl
- ps
- pt
- ro
- ru
- si
- sk
- sl
- so
- sq
- sr
- sv
- sw
- ta
- te
- th
- tr
- uk
- ur
- uz
- vi
- wuu
- yue
- zh
- zu
- auto
AzureTranscriptionRegion:
title: Azure transcription engine list of regions
type: string
description: Azure region to use for speech recognition
example: eastus
enum:
- australiaeast
- centralindia
- eastus
- northcentralus
- westeurope
- westus2
AzureVoiceSettings:
type: object
title: Azure Voice Settings
properties:
type:
type: string
enum:
- azure
description: Voice settings provider type
api_key_ref:
description: The `identifier` for an integration secret that refers to your Azure Speech API key.
type: string
example: my_azure_api_key
region:
description: The Azure region for the Speech service (e.g., `eastus`, `westeurope`). Required when using a custom
API key.
type: string
example: eastus
deployment_id:
description: The deployment ID for a custom Azure neural voice.
type: string
example: my-custom-voice-deployment
effect:
description: Audio effect to apply.
type: string
enum:
- eq_car
- eq_telecomhp8k
gender:
description: Voice gender filter.
type: string
enum:
- Male
- Female
required:
- type
BackgroundTaskStatus:
type: string
enum:
- queued
- processing
- success
- failure
- partial_success
title: BackgroundTaskStatus
description: Status of an embeddings task.
BackgroundTasksQueryResponse:
properties:
user_id:
type: string
title: User Id
task_id:
type: string
title: Task Id
task_name:
type: string
title: Task Name
status:
$ref: '#/components/schemas/BackgroundTaskStatus'
created_at:
type: string
format: date-time
title: Created At
finished_at:
type: string
format: date-time
title: Finished At
bucket:
type: string
title: Bucket
type: object
required:
- user_id
- task_id
- task_name
- status
- created_at
title: BackgroundTasksQueryResponse
BackgroundTasksQueryResponseData:
properties:
data:
items:
$ref: '#/components/schemas/BackgroundTasksQueryResponse'
type: array
title: Data
type: object
required:
- data
title: BackgroundTasksQueryResponseData
Base64AudioResponse:
type: object
description: Response when `output_type` is `base64_output`.
properties:
base64_audio:
type: string
description: Base64-encoded audio data.
BatchAction:
type: object
description: 'Execute 1-50 sub-actions sequentially. Non-recursive: a batch inside a batch is rejected (400). An empty
array is rejected (400). A failed sub-action stops the batch; earlier browser mutations are not rolled back, but partial
sub-action results are not returned.'
required:
- type
- actions
properties:
type:
const: batch
actions:
type: array
minItems: 1
maxItems: 50
items:
oneOf:
- $ref: '#/components/schemas/NavigateAction'
- $ref: '#/components/schemas/ObserveAction'
- $ref: '#/components/schemas/ClickAction'
- $ref: '#/components/schemas/FillAction'
- $ref: '#/components/schemas/SelectAction'
- $ref: '#/components/schemas/PressAction'
- $ref: '#/components/schemas/ScrollAction'
- $ref: '#/components/schemas/ScreenshotAction'
- $ref: '#/components/schemas/WaitForAction'
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
BillingAddress:
$ref: '#/components/schemas/PhysicalAddress'
BillingBundleResponse:
title: BillingBundleResponse
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/BillingBundleSchema'
BillingBundleSchema:
title: BillingBundleSchema
required:
- id
- name
- cost_code
- active
- is_public
- created_at
- bundle_limits
type: object
properties:
id:
title: Id
type: string
format: uuid
example: 7ecd040e-6bac-4139-9160-3c0427d98fea
description: Bundle's ID, this is used to identify the bundle in the API.
name:
title: Name
type: string
example: Australia Basic
description: Bundle's name, this is used to identify the bundle in the UI.
slug:
title: Slug
type: string
example: basic-au-e4f8
description: Slugified version of the bundle's name.
cost_code:
title: Cost Code
type: string
example: BUNDLE-PRICING-BASIC-MRC
description: Bundle's cost code, this is used to identify the bundle in the billing system.
active:
title: Active
type: boolean
description: If that bundle is active or not.
is_public:
title: Is Public
type: boolean
description: Available to all customers or only to specific customers.
created_at:
title: Created At
type: string
format: date
description: Date the bundle was created.
bundle_limits:
title: Bundle Limits
type: array
items:
$ref: '#/components/schemas/BundleLimitSchema'
BillingBundleSummary:
title: BillingBundleSummary
required:
- id
- name
- cost_code
- is_public
- created_at
type: object
properties:
id:
title: Id
type: string
format: uuid
example: 7ecd040e-6bac-4139-9160-3c0427d98fea
description: Bundle's ID, this is used to identify the bundle in the API.
name:
title: Name
type: string
example: Australia Basic
description: Bundle's name, this is used to identify the bundle in the UI.
slug:
title: Slug
type: string
example: basic-au-e4f8
description: Slugified version of the bundle's name.
cost_code:
title: Cost Code
type: string
example: BUNDLE-PRICING-BASIC-MRC
description: Bundle's cost code, this is used to identify the bundle in the billing system.
is_public:
title: Is Public
type: boolean
description: Available to all customers or only to specific customers.
created_at:
title: Created At
type: string
format: date
description: Date the bundle was created.
mrc_price:
title: Mrc Price
type: number
format: float
example: 2.0
description: Monthly recurring charge price.
currency:
title: Currency
type: string
example: USD
description: Bundle's currency code.
specs:
title: Specs
type: array
items:
type: string
example:
- 1 AU Number
- Emergency Calling
- All inbound and outbound calling billed pay-as-you-go
BillingCategory:
type: string
enum:
- NON_CONVERSATIONAL
- CONVERSATIONAL
BillingContact:
type: object
required:
- first_name
- last_name
- email
- phone_number
properties:
first_name:
type: string
maxLength: 255
description: The first name of the person Telnyx should contact about billing for this account.
example: Alex
last_name:
type: string
maxLength: 255
description: The last name of the person Telnyx should contact about billing for this account.
example: Bill
email:
type: string
format: email
description: The email address of the person Telnyx should contact about billing for this account.
example: billing@acmeplumbing.example.com
phone_number:
type: string
description: The phone number of the billing contact, in E.164 format, for example +12125551234.
example: '+13125550001'
BillingGroup:
type: object
properties:
record_type:
type: string
enum:
- billing_group
description: Identifies the type of the resource.
example: billing_group
id:
type: string
format: uuid
description: Identifies the type of resource.
example: f5586561-8ff0-4291-a0ac-84fe544797bd
organization_id:
type: string
format: uuid
description: Identifies the organization that owns the resource.
example: f1486bae-f067-460c-ad43-73a92848f902
name:
type: string
description: A user-specified name for the billing group
example: My billing group name
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2019-10-15T10:07:15.527Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2019-10-15T10:07:15.527Z'
deleted_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the resource was removed.
example: null
example:
record_type: billing_group
id: f5586561-8ff0-4291-a0ac-84fe544797bd
organization_id: f1486bae-f067-460c-ad43-73a92848f902
name: My billing group name
created_at: '2019-10-15T10:07:15.527Z'
updated_at: '2019-10-15T10:07:15.527Z'
deleted_at: null
BlackBoxTestResult:
type: object
properties:
record_type:
type: string
example: black_box_test
id:
type: string
description: The name of the black box test.
example: msg_overview_outbound_sms
result:
type: number
description: The average result of the black box test over the last hour.
example: 0.999
BlackBoxTestResultSet:
type: object
properties:
record_type:
type: string
example: black_box_test_result
product:
type: string
example: cloud_storage
description: The product associated with the black box test group.
black_box_tests:
type: array
items:
$ref: '#/components/schemas/BlackBoxTestResult'
BlocksErrorObject:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
description: 'Error codes: `10001` (Not Found), `10007` (Unauthorized),
`10015` (Validation Failed), `10019` (Internal — import create
fallback), `40901` (Conflict), `500` (framework/catch-all).
'
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
description: '`/data/attributes/` for changeset/Params; `/` for query-param errors.'
BookAppointmentTool:
properties:
type:
type: string
enum:
- book_appointment
book_appointment:
$ref: '#/components/schemas/BookAppointmentToolParams'
type: object
required:
- type
- book_appointment
title: BookAppointmentTool
BookAppointmentToolParams:
properties:
event_type_id:
type: integer
description: Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-event-type-id)
api_key_ref:
type: string
description: Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier`
for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
that refers to your Cal.com API key.
example: my_calcom_api_key
attendee_name:
type: string
description: The name of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-name).
If not provided, the assistant will ask for the attendee's name.
attendee_timezone:
type: string
description: The timezone of the attendee [cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#body-attendee-timezone).
If not provided, the assistant will ask for the attendee's timezone.
type: object
required:
- event_type_id
- api_key_ref
title: BookAppointmentToolParams
BooleanLiteralExpression:
description: Constant boolean value. Useful for unconditional ('always') edges.
example:
type: bool_literal
value: true
properties:
type:
const: bool_literal
title: Type
type: string
value:
description: Literal boolean value.
title: Value
type: boolean
required:
- type
- value
title: BooleanLiteralExpression
type: object
BooleanOpExpression:
description: 'Combine sub-expressions with a logical operator (`and` / `or` / `not`).
`and` and `or` accept two or more operands; `not` accepts exactly one.'
example:
op: and
operands:
- name: is_premium
type: variable
- left:
name: user_age
type: variable
op: '>='
right:
type: number_literal
value: 18
type: comparison
type: bool_op
properties:
op:
description: Logical operator. `not` is unary; `and`/`or` are n-ary (>=2).
enum:
- and
- or
- not
title: Op
type: string
operands:
description: Operand sub-expressions. Length must be exactly 1 for `not` and >= 2 for `and`/`or`.
items:
$ref: '#/components/schemas/Expression'
title: Operands
type: array
type:
const: bool_op
title: Type
type: string
required:
- type
- op
- operands
title: BooleanOpExpression
type: object
BotChallengeRequest:
type: object
description: Optional self-reported metadata about the LLM solving the challenge. Analytics only; values are truncated
to 50 characters.
properties:
llm_model_name:
type: string
description: Name of the LLM the client is using.
example: claude-opus-4
llm_parameter_count:
type: string
description: Parameter count of the client LLM.
example: 175B
llm_quantization:
type: string
description: Quantization of the client LLM.
example: int8
BotChallengeResponse:
type: object
required:
- data
properties:
data:
type: object
required:
- nonce
- problem
- challenge_type
- terms_and_conditions_url
- privacy_policy_url
properties:
nonce:
type: string
format: uuid
description: Single-use challenge identifier. Submit it as `bot_challenge_nonce` on the signup request.
example: c6feda4e-6501-4db9-a21f-665e5b4ce2ba
problem:
type: string
description: Problem text to solve. Math problems are obfuscated and end with an unobfuscated rounding instruction;
string and binary problems are returned as-is.
example: W#hAt iS f!Ve tImEs sEvEn? Round to 0 decimal places. Omit units.
challenge_type:
type: string
description: Type of challenge.
enum:
- math
- string
- binary
example: math
precision:
type: integer
description: Decimal places expected in the answer. Present only for math challenges.
example: 0
terms_and_conditions_url:
type: string
description: Current terms-and-conditions URL. Echo this back on the signup request.
example: https://telnyx.com/terms-and-conditions-of-service
privacy_policy_url:
type: string
description: Current privacy-policy URL. Echo this back on the signup request.
example: https://telnyx.com/privacy-policy
BotSessionResponse:
type: object
required:
- data
properties:
data:
type: object
required:
- api_v2_token
properties:
api_v2_token:
type: string
description: API v2 session token for the signed-in user. Use it as a bearer token on authenticated endpoints.
example: KEY0189A1B2C3D4E5F6071829AB3C4D5E_5FhZonmFvcw8Yq0dME27Bg
BotSignupRequest:
type: object
properties:
email:
type: string
format: email
description: Email address for the new account. The magic link is sent here. May only be omitted when placeholder-email
registration is enabled server-side.
example: agent-owner@example.com
terms_of_service:
type: boolean
enum:
- true
description: Must be true to accept the terms of service.
example: true
terms_and_conditions_url:
type: string
description: Must exactly match the terms-and-conditions URL returned by the challenge endpoint.
example: https://telnyx.com/terms-and-conditions-of-service
privacy_policy_url:
type: string
description: Must exactly match the privacy-policy URL returned by the challenge endpoint.
example: https://telnyx.com/privacy-policy
terms_of_service_eu:
type: boolean
enum:
- true
description: EU terms-of-service acceptance. Required when EU consent enforcement is enabled.
example: true
terms_and_conditions_eu_url:
type: string
description: EU terms-and-conditions URL. Required when EU consent enforcement is enabled.
example: https://telnyx.com/terms-and-conditions-of-service-eu
bot_challenge_nonce:
type: string
format: uuid
description: Nonce from a previously issued bot challenge.
example: c6feda4e-6501-4db9-a21f-665e5b4ce2ba
bot_challenge_answer:
type: string
description: Answer to the issued bot challenge.
example: '35'
required:
- terms_of_service
- terms_and_conditions_url
- privacy_policy_url
- bot_challenge_nonce
- bot_challenge_answer
BpoAuthorization:
type: object
description: A single authorization of a BPO (Business Process Outsourcer) account on a DIR.
required:
- record_type
- bpo_enterprise_id
- status
- loa_document_id
properties:
record_type:
type: string
enum:
- bpo_authorization
description: Always `bpo_authorization`.
example: bpo_authorization
readOnly: true
bpo_enterprise_id:
type: string
format: uuid
description: The authorized BPO account's enterprise id.
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
status:
type: string
enum:
- pending
- approved
- rejected
description: Review state of this authorization. `pending` when the authorization is first added, or when you send
a different `loa_document_id` for this BPO in `bpo_authorizations` (uploading a document alone changes nothing).
Approving the DIR approves its pending authorizations; an admin can also approve or reject one on its own. Only
an `approved` authorization adds the BPO to this DIR's authorized callers in the branded calling registry.
example: pending
loa_document_id:
type: string
format: uuid
description: Id of the signed Letter of Authorization document submitted for this BPO. Send it back unchanged in
`bpo_authorizations` when updating the DIR to keep this authorization and its review state.
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
rejection_reason:
type: string
nullable: true
description: Why the authorization was rejected. `null` unless `status` is `rejected`.
example: Letter of Authorization is unsigned
BpoAuthorizationInput:
type: object
description: 'One authorization to include when creating or updating a DIR: an approved BPO (Business Process Outsourcer)
account plus the signed Letter of Authorization the Brand Owner granted it.'
required:
- bpo_enterprise_id
- loa_document_id
properties:
bpo_enterprise_id:
type: string
format: uuid
description: Enterprise id of an approved BPO (Business Process Outsourcer) account on your organization to authorize
for this DIR.
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
loa_document_id:
type: string
format: uuid
description: Id of the signed Letter of Authorization document (uploaded via the Telnyx Documents API) in which
the Brand Owner authorizes this BPO.
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
BpoAuthorizationList:
type: object
description: Paginated list of a DIR's BPO authorizations.
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/BpoAuthorization'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
BpoAuthorizationLoaRenderRequest:
type: object
required:
- bpo_enterprise_id
properties:
bpo_enterprise_id:
type: string
format: uuid
description: The approved BPO enterprise the Brand Owner is authorizing. Must be a BPO account on the caller's organization
that has already been approved.
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
signature:
allOf:
- $ref: '#/components/schemas/SignaturePayload'
description: Optional. When provided the rendered PDF embeds the signature image, printed name, and signed-at date.
When absent the PDF is returned unsigned so the Brand Owner can sign externally and the BPO can upload it via
the Documents API.
BrandAddress:
type: object
additionalProperties: false
properties:
line_1:
type: string
minLength: 1
maxLength: 255
line_2:
type:
- string
- 'null'
minLength: 1
maxLength: 255
city:
type: string
minLength: 1
maxLength: 100
administrative_area:
type: string
minLength: 1
maxLength: 100
postal_code:
type: string
minLength: 1
maxLength: 32
country_code:
type: string
pattern: ^[A-Z]{2}$
description: The two-letter ISO 3166-1 country code.
required:
- line_1
- city
- administrative_area
- postal_code
- country_code
BrandBasic:
title: ListedBrand
type: object
properties:
brandId:
type: string
description: Unique identifier assigned to the brand.
example: 4b206179-f731-8ab7-f19c-34e19d22ide9
tcrBrandId:
type: string
description: Unique identifier assigned to the brand by the registry.
example: BBRAND1
entityType:
$ref: '#/components/schemas/EntityType'
identityStatus:
$ref: '#/components/schemas/BrandIdentityStatus'
companyName:
type: string
description: (Required for Non-profit/private/public) Legal company name.
example: Example Company Inc.
displayName:
type: string
description: Display or marketing name of the brand.
example: Example Company
email:
type: string
description: Valid email address of brand support contact.
example: examplename@examplecompany.com
website:
type: string
description: Brand website URL.
example: www.examplecompany.com
failureReasons:
title: failureReasons
description: Failure reasons for brand
type: string
status:
title: status
description: Status of the brand
enum:
- OK
- REGISTRATION_PENDING
- REGISTRATION_FAILED
type: string
createdAt:
type: string
description: Date and time that the brand was created at.
example: '2021-03-08T17:57:48.801186'
updatedAt:
type: string
description: Date and time that the brand was last updated at.
example: '2021-03-08T17:57:48.801186'
assignedCampaingsCount:
type: integer
description: Number of campaigns associated with the brand
example: 2
BrandContact:
type: object
propertyNames:
enum:
- contact_type
- first_name
- last_name
- title
- email
- phone_number
properties:
contact_type:
$ref: '#/components/schemas/BrandContactType'
first_name:
type: string
minLength: 1
maxLength: 100
last_name:
type: string
minLength: 1
maxLength: 100
title:
type:
- string
- 'null'
minLength: 1
maxLength: 100
email:
type: string
minLength: 3
maxLength: 254
format: email
pattern: ^[^@\s]+@[^@\s]+\.[^@\s]+$
phone_number:
type: string
maxLength: 16
pattern: ^\+[1-9][0-9]{1,14}$
required:
- contact_type
- first_name
- last_name
- email
- phone_number
BrandContactType:
type: string
enum:
- BRAND
- PRIMARY
- OFFICER
- AGENT
- RESPONSIBLE_PARTY
- BILLING
- UNKNOWN
BrandContacts:
type: object
minProperties: 1
properties:
brand:
allOf:
- $ref: '#/components/schemas/BrandContact'
- properties:
contact_type:
const: BRAND
additionalProperties:
$ref: '#/components/schemas/BrandContact'
required:
- brand
description: Named business contacts. Use the `brand` key for the required BRAND contact.
BrandCreateRequest:
type: object
additionalProperties: false
properties:
display_name:
type: string
minLength: 1
maxLength: 100
legal_name:
type: string
minLength: 1
maxLength: 100
legal_entity_type:
$ref: '#/components/schemas/BrandLegalEntityType'
organization_type:
$ref: '#/components/schemas/BrandOrganizationType'
website_url:
$ref: '#/components/schemas/HttpUrl'
profile_id:
type:
- string
- 'null'
maxLength: 36
description: A Messaging Profile owned by the authenticated organization. Agents inherit this value when they do
not provide their own profile.
identifiers:
$ref: '#/components/schemas/BrandIdentifiers'
addresses:
type: object
minProperties: 1
additionalProperties:
$ref: '#/components/schemas/BrandAddress'
contacts:
$ref: '#/components/schemas/BrandContacts'
required:
- display_name
- legal_name
- legal_entity_type
- organization_type
- website_url
- identifiers
- addresses
- contacts
allOf:
- if:
properties:
organization_type:
const: PUBLIC_PROFIT
required:
- organization_type
then:
properties:
identifiers:
properties:
stock_symbol:
$ref: '#/components/schemas/BrandIdentifier'
required:
- stock_symbol
example:
display_name: Acme
legal_name: Acme LLC
legal_entity_type: LIMITED_LIABILITY_COMPANY
organization_type: PRIVATE_PROFIT
website_url: https://www.example.com
profile_id: 40000000-0000-0000-0000-000000000001
identifiers:
ein:
identifier_type: EIN
value: 12-3456789
addresses:
primary:
line_1: 1 Main Street
city: Chicago
administrative_area: IL
postal_code: '60601'
country_code: US
contacts:
brand:
contact_type: BRAND
first_name: Jane
last_name: Doe
title: Messaging Operations Manager
email: jane@example.com
phone_number: '+13125550100'
BrandFeedback:
title: BrandFeedback
required:
- brandId
- category
type: object
properties:
brandId:
title: Brandid
type: string
description: ID of the brand being queried about
example: d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5
category:
title: Category
type: array
items:
$ref: '#/components/schemas/BrandFeedbackCategory'
description: A list of reasons why brand creation/revetting didn't go as planned
BrandFeedbackCategory:
title: BrandFeedbackCategory
required:
- id
- displayName
- description
- fields
type: object
properties:
id:
title: Id
type: string
description: One of `TAX_ID`, `STOCK_SYMBOL`, `GOVERNMENT_ENTITY`, `NONPROFIT`, and `OTHERS`
example: TAX_ID
displayName:
title: Displayname
type: string
description: Human-readable version of the `id` field
example: Tax Id
description:
title: Description
type: string
description: Long-form description of the feedback with additional information
example: Tax Id does not match with the company name or business type.
fields:
title: Fields
type: array
items:
type: string
description: List of relevant fields in the originally-submitted brand json
example:
- ein
- companyName
- entityType
BrandIdentifier:
oneOf:
- $ref: '#/components/schemas/EinBrandIdentifier'
- $ref: '#/components/schemas/StockSymbolBrandIdentifier'
BrandIdentifiers:
type: object
minProperties: 1
properties:
ein:
$ref: '#/components/schemas/EinBrandIdentifier'
stock_symbol:
$ref: '#/components/schemas/StockSymbolBrandIdentifier'
additionalProperties:
$ref: '#/components/schemas/BrandIdentifier'
required:
- ein
description: Named business identifiers. Use the `ein` key for the required EIN and `stock_symbol` for a public-profit
brand's stock symbol.
BrandIdentityStatus:
title: BrandIdentityStatus
enum:
- VERIFIED
- UNVERIFIED
- SELF_DECLARED
- VETTED_VERIFIED
description: The verification status of an active brand
type: string
BrandLegalEntityType:
type: string
enum:
- LIMITED_LIABILITY_COMPANY
- SOLE_PROPRIETORSHIP
- PARTNERSHIP
- CORPORATION
- S_CORPORATION
BrandLoaRenderRequest:
type: object
required:
- phone_numbers
properties:
phone_numbers:
type: array
minItems: 1
maxItems: 15
description: Telephone numbers to authorize on the DIR, in `+E164` format (`+` followed by 10-15 digits). Max 15
per request.
items:
type: string
pattern: ^\+[1-9][0-9]{9,14}$
example: '+13125550000'
agent:
allOf:
- $ref: '#/components/schemas/AgentInput'
description: Optional. The third-party reseller / partner managing the enterprise's phone numbers on its behalf;
omitted, the LOA marks the Authorized Agent block as N/A. A call center (BPO) adding numbers to a client's DIR
puts its own details here. The letter is signed by the DIR enterprise's organization contact (the client, in the
BPO case), not by the agent.
signature:
allOf:
- $ref: '#/components/schemas/SignaturePayload'
description: Optional. When provided the rendered PDF embeds the signature image, printed name, and signed-at date.
When absent the PDF is returned unsigned so the customer can sign externally and upload it via the Documents API.
BrandOptionalAttributes:
title: BrandOptionalAttributes
type: object
properties:
taxExemptStatus:
title: Taxexemptstatus
type: string
description: The tax exempt status of the brand
BrandOrganizationType:
type: string
enum:
- PRIVATE_PROFIT
- PUBLIC_PROFIT
- NON_PROFIT
- GOVERNMENT
- UNKNOWN
BrandRecordSetCSP:
title: BrandRecordSetCSP
type: object
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/BrandBasic'
page:
title: Page
type: integer
example: 1
totalRecords:
title: Totalrecords
type: integer
example: 1
BrandRelationship:
title: BrandRelationship
enum:
- BASIC_ACCOUNT
- SMALL_ACCOUNT
- MEDIUM_ACCOUNT
- LARGE_ACCOUNT
- KEY_ACCOUNT
description: Brand relationship to the CSP.
type: string
BrandResponse:
type: object
additionalProperties: false
properties:
brand_id:
type: string
format: uuid
display_name:
type: string
legal_name:
type: string
legal_entity_type:
type: string
organization_type:
type: string
website_url:
$ref: '#/components/schemas/HttpUrl'
status:
$ref: '#/components/schemas/BrandState'
profile_id:
type:
- string
- 'null'
identifiers:
type: object
additionalProperties:
$ref: '#/components/schemas/BrandIdentifier'
addresses:
type: object
additionalProperties:
$ref: '#/components/schemas/BrandAddress'
contacts:
type: object
additionalProperties:
$ref: '#/components/schemas/BrandContact'
capabilities:
$ref: '#/components/schemas/CapabilitiesResponse'
required:
- brand_id
- display_name
- legal_name
- legal_entity_type
- organization_type
- website_url
- status
- profile_id
- identifiers
- addresses
- contacts
- capabilities
example:
brand_id: 11111111-1111-4111-8111-111111111111
display_name: Acme
legal_name: Acme LLC
legal_entity_type: LIMITED_LIABILITY_COMPANY
organization_type: PRIVATE_PROFIT
website_url: https://www.example.com
status: CREATED
profile_id: 40000000-0000-0000-0000-000000000001
identifiers:
ein:
identifier_type: EIN
value: 12-3456789
addresses:
primary:
line_1: 1 Main Street
city: Chicago
administrative_area: IL
postal_code: '60601'
country_code: US
contacts:
brand:
contact_type: BRAND
first_name: Jane
last_name: Doe
title: Messaging Operations Manager
email: jane@example.com
phone_number: '+13125550100'
capabilities:
brand_entity: true
brand_verification: true
submission_sections: true
distinct_launch_phase: false
per_carrier_approval: false
templates: false
campaigns: false
vendor_webhooks: false
invite_test_devices: false
BrandSmsOtpStatus:
title: BrandSmsOtpStatus
required:
- brandId
- referenceId
- mobilePhone
- requestDate
- deliveryStatus
type: object
properties:
brandId:
title: Brandid
type: string
description: The Brand ID associated with this OTP request
example: B123ABC
referenceId:
title: Referenceid
type: string
description: The reference ID for this OTP request, used for status queries
example: OTP4B2001
mobilePhone:
title: Mobilephone
type: string
description: The mobile phone number where the OTP was sent, in E.164 format
example: '+11234567890'
requestDate:
title: Requestdate
type: string
format: date-time
description: The timestamp when the OTP request was initiated
example: '2024-12-03T17:12:33.560000+00:00'
verifyDate:
title: Verifydate
type: string
format: date-time
description: The timestamp when the OTP was successfully verified (if applicable)
example: '2024-12-03T17:12:33.560000+00:00'
deliveryStatus:
title: Deliverystatus
type: string
description: 'The current delivery status of the OTP SMS message. Common values include: `DELIVERED_HANDSET`, `PENDING`,
`FAILED`, `EXPIRED`'
example: DELIVERED_HANDSET
deliveryStatusDate:
title: Deliverystatusdate
type: string
format: date-time
description: The timestamp when the delivery status was last updated
example: '2024-12-03T17:12:33.560000+00:00'
deliveryStatusDetails:
title: Deliverystatusdetails
type: string
description: Additional details about the delivery status
example: Delivered to handset
description: Status information for an SMS OTP sent during Sole Proprietor brand verification
BrandState:
type: string
enum:
- CREATED
- CONFIGURED
- SUBMITTED
- REVIEWING
- VETTING
- VERIFIED
- REJECTED
- FAILED
BrandUpdateRequest:
type: object
additionalProperties: false
minProperties: 1
properties:
display_name:
type: string
minLength: 1
maxLength: 100
legal_name:
type: string
minLength: 1
maxLength: 100
legal_entity_type:
$ref: '#/components/schemas/BrandLegalEntityType'
organization_type:
$ref: '#/components/schemas/BrandOrganizationType'
website_url:
$ref: '#/components/schemas/HttpUrl'
profile_id:
type: string
maxLength: 36
identifiers:
$ref: '#/components/schemas/BrandIdentifiers'
addresses:
type: object
minProperties: 1
additionalProperties:
$ref: '#/components/schemas/BrandAddress'
contacts:
$ref: '#/components/schemas/BrandContacts'
example:
display_name: Acme Communications
BreakdownData:
type: object
properties:
user_id:
type: string
description: User identifier
example: 0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8
start_date:
type: string
format: date
description: Start date of the breakdown period
example: '2025-05-01'
end_date:
type: string
format: date
description: End date of the breakdown period
example: '2025-06-01'
user_email:
type: string
format: email
description: User email address
example: user@example.com
currency:
type: string
description: Currency code
example: USD
results:
type: array
items:
$ref: '#/components/schemas/NumberBreakdownResult'
description: List of phone number charge breakdowns
required:
- user_id
- start_date
- end_date
- user_email
- currency
- results
BridgeRequest:
type: object
title: Bridge Request
required:
- call_control_id
properties:
call_control_id:
description: The Call Control ID of the call you want to bridge with, can't be used together with queue parameter
or video_room_id parameter.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
queue:
description: The name of the queue you want to bridge with, can't be used together with call_control_id parameter
or video_room_id parameter. Bridging with a queue means bridging with the first call in the queue. The call will
always be removed from the queue regardless of whether bridging succeeds. Returns an error when the queue is empty.
type: string
example: support
video_room_id:
description: The ID of the video room you want to bridge with, can't be used together with call_control_id parameter
or queue parameter.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
video_room_context:
description: The additional parameter that will be passed to the video conference. It is a text field and the user
can decide how to use it. For example, you can set the participant name or pass JSON text. It can be used only
with video_room_id parameter.
type: string
example: Alice
prevent_double_bridge:
description: When set to `true`, it prevents bridging if the target call is already bridged to another call. Disabled
by default.
type: boolean
default: false
example: true
park_after_unbridge:
description: Specifies behavior after the bridge ends (i.e. the opposite leg either hangs up or is transferred).
If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior
is to hang up the leg.
type: string
example: self
play_ringtone:
description: Specifies whether to play a ringtone if the call you want to bridge with has not yet been answered.
type: boolean
default: false
example: true
ringtone:
description: Specifies which country ringtone to play when `play_ringtone` is set to `true`. If not set, the US
ringtone will be played.
type: string
default: us
example: pl
enum:
- at
- au
- be
- bg
- br
- ch
- cl
- cn
- cz
- de
- dk
- ee
- es
- fi
- fr
- gr
- hu
- il
- in
- it
- jp
- lt
- mx
- my
- nl
- 'no'
- nz
- ph
- pl
- pt
- ru
- se
- sg
- th
- tw
- uk
- us-old
- us
- ve
- za
record:
description: Start recording automatically after an event. Disabled by default.
type: string
enum:
- record-from-answer
example: record-from-answer
record_channels:
description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified.
type: string
enum:
- single
- dual
default: dual
example: single
record_format:
description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified.
type: string
enum:
- wav
- mp3
default: mp3
example: wav
record_max_length:
description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value
is 0. The maximum value is 43200. The default value is 0 (infinite).
type: integer
format: int32
default: 0
example: 1000
record_timeout_secs:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected
when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription
is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is
0 (infinite).
type: integer
format: int32
default: 0
example: 100
record_track:
description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track
is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single
channel).
type: string
example: outbound
default: both
enum:
- both
- inbound
- outbound
record_trim:
description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
enum:
- trim-silence
type: string
example: trim-silence
record_custom_file_name:
description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add
a Unix timestamp suffix.
type: string
minLength: 1
maxLength: 40
example: my_recording_file_name
mute_dtmf:
description: When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information
will be sent.
type: string
enum:
- none
- both
- self
- opposite
default: none
example: opposite
hold_after_unbridge:
description: Specifies behavior after the bridge ends. If set to `true`, the current leg will be put on hold after
unbridge instead of being hung up.
type: boolean
example: true
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
park_after_unbridge: self
Bucket:
description: Name of the bucket to be used to store recording files.
type: string
example: example-bucket
BucketAPIUsageResponse:
type: object
properties:
categories:
type: array
items:
$ref: '#/components/schemas/BucketOps'
total:
$ref: '#/components/schemas/BucketOpsTotal'
timestamp:
type: string
format: date-time
description: The time the usage was recorded
example: '2020-01-01T00:00:00Z'
BucketIds:
properties:
bucket_ids:
items:
type: string
type: array
description: List of [embedded storage buckets](https://developers.telnyx.com/api-reference/embeddings/embed-documents)
to use for retrieval-augmented generation.
max_num_results:
description: The maximum number of results to retrieve as context for the language model.
type: integer
type: object
required:
- bucket_ids
title: BucketIds
BucketNotFoundError:
properties:
detail:
items:
$ref: '#/components/schemas/NotFoundError'
type: array
title: Detail
type: object
title: HTTPValidationError
BucketOps:
type: object
properties:
bytes_sent:
type: integer
description: The number of bytes sent
example: 123456
bytes_received:
type: integer
description: The number of bytes received
example: 123456
ops:
type: integer
description: The number of operations
example: 123456
successful_ops:
type: integer
description: The number of successful operations
example: 123456
category:
type: string
enum:
- list_bucket
- list_buckets
- get-bucket_location
- create_bucket
- stat_bucket
- get_bucket_versioning
- set_bucket_versioning
- get_obj
- put_obj
- delete_obj
description: The category of the bucket operation
example: put_obj
BucketOpsTotal:
type: object
properties:
bytes_sent:
type: integer
description: The number of bytes sent
example: 123456
bytes_received:
type: integer
description: The number of bytes received
example: 123456
ops:
type: integer
description: The number of operations
example: 123456
successful_ops:
type: integer
description: The number of successful operations
example: 123456
BucketUsage:
type: object
properties:
size:
type: integer
description: The size of the bucket in bytes
example: 123456
size_kb:
type: integer
description: The size of the bucket in kilobytes
example: 123456
num_objects:
type: integer
description: The number of objects in the bucket
example: 123456
timestamp:
type: string
format: date-time
description: The time the snapshot was taken
example: '2020-01-01T00:00:00Z'
BudgetDuration:
type:
- string
- 'null'
enum:
- 1d
- 7d
- 30d
- null
BulkAddPhoneNumbersRequest:
type: object
required:
- phone_numbers
- documents
additionalProperties: false
properties:
phone_numbers:
type: array
items:
type: string
example: '+19493253498'
minItems: 1
maxItems: 15
description: 1–15 phone numbers in E.164 format. 10-digit US numbers are auto-prefixed with `1`.
documents:
type: array
items:
$ref: '#/components/schemas/Document'
minItems: 1
maxItems: 20
description: 'Supporting documents covering this batch. At least one entry with `document_type: letter_of_authorization`
is required - the LOA authorises Telnyx to register these numbers under the DIR. Each `document_id` must come
from the Telnyx Documents API. Additional document types (e.g. business registration) may be included alongside
the LOA.'
BulkCreateAiTestMetricRequest:
type: array
items:
$ref: '#/components/schemas/CreateAiTestMetricRequest'
example:
- name: Greets within 5 seconds
description: Returns whether the assistant greeted the caller within five seconds.
type: llm_judge
eval_type: continuous_qualitative
prompt: Score whether the greeting was timely and natural.
BulkDeletePhoneNumbersRequest:
type: object
required:
- phone_numbers
additionalProperties: false
properties:
phone_numbers:
type: array
items:
type: string
example: '+19493253498'
minItems: 1
maxItems: 100
description: The phone numbers to remove from this brand, in E.164 format, up to 100 per request. They must currently
be attached to this brand.
BulkMessagingSettingsUpdatePhoneNumbers:
type: object
properties:
record_type:
type: string
example: messaging_numbers_bulk_update
enum:
- messaging_numbers_bulk_update
description: Identifies the type of the resource.
readOnly: true
order_id:
type: string
format: uuid
description: Order ID to verify bulk update status.
readOnly: true
success:
type: array
items:
type: string
x-format: +E.164
description: Phoned numbers updated successfully.
pending:
type: array
items:
type: string
x-format: +E.164
description: Phone numbers pending to be updated.
failed:
type: array
items:
type: string
x-format: +E.164
description: Phone numbers that failed to update.
example:
record_type: messaging_numbers_bulk_update
order_id: 00000000-0000-0000-0000-000000000000
success:
- '+18880000000'
- '+18880000001'
- '+18880000002'
pending: []
failed: []
BulkMessagingSettingsUpdatePhoneNumbersRequest:
type: object
required:
- messaging_profile_id
- numbers
properties:
messaging_profile_id:
type: string
description: 'Configure the messaging profile these phone numbers are assigned to:
* Set this field to `""` to unassign each number from their respective messaging profile
* Set this field to a quoted UUID of a messaging profile to assign these numbers to that messaging profile'
numbers:
type: array
items:
type: string
x-format: +E.164
description: The list of phone numbers to update.
assign_only:
type: boolean
description: If true, only assign numbers to the profile without changing other settings.
default: false
example:
messaging_profile_id: 00000000-0000-0000-0000-000000000000
numbers:
- '+18880000000'
- '+18880000001'
- '+18880000002'
BulkSIMCardAction:
type: object
description: This object represents a bulk SIM card action. It groups SIM card actions created through a bulk endpoint
under a single resource for further lookup.
properties:
id:
$ref: '#/components/schemas/wireless_Id_c5290d5308'
record_type:
type: string
example: bulk_sim_card_action
readOnly: true
action_type:
type: string
description: 'The action type. It can be one of the following:
bulk_disable_voice - disable voice for every SIM Card in a SIM Card Group.
bulk_enable_voice - enable voice for every SIM Card in a SIM Card Group.
bulk_set_public_ips - set a public IP for each specified SIM Card.
'
enum:
- bulk_disable_voice
- bulk_enable_voice
- bulk_set_public_ips
readOnly: true
example: bulk_set_public_ips
settings:
type: object
description: A JSON object representation of the bulk action payload.
example: {}
readOnly: true
additionalProperties: true
created_at:
$ref: '#/components/schemas/wireless_CreatedAt_c5290d5308'
updated_at:
$ref: '#/components/schemas/wireless_UpdatedAt_c5290d5308'
BulkSIMCardActionDetailed:
type: object
properties:
id:
$ref: '#/components/schemas/wireless_Id_c5290d5308'
record_type:
type: string
example: bulk_sim_card_action
readOnly: true
action_type:
type: string
description: 'The action type. It can be one of the following:
bulk_disable_voice - disable voice for every SIM Card in a SIM Card Group.
bulk_enable_voice - enable voice for every SIM Card in a SIM Card Group.
bulk_set_public_ips - set a public IP for each specified SIM Card.
'
enum:
- bulk_disable_voice
- bulk_enable_voice
- bulk_set_public_ips
readOnly: true
example: bulk_set_public_ips
settings:
type: object
description: A JSON object representation of the bulk action payload.
example: {}
readOnly: true
additionalProperties: true
sim_card_actions_summary:
type: array
items:
$ref: '#/components/schemas/SIMCardActionsSummary'
created_at:
$ref: '#/components/schemas/wireless_CreatedAt_c5290d5308'
updated_at:
$ref: '#/components/schemas/wireless_UpdatedAt_c5290d5308'
BundleLimitDirection:
title: BundleLimitDirection
enum:
- inbound
- outbound
type: string
description: An enumeration.
BundleLimitSchema:
title: BundleLimitSchema
required:
- id
- service
- metric
- created_at
- updated_at
type: object
properties:
id:
title: Id
type: string
format: uuid
example: e6a32ea9-953b-4622-bbba-9f7bcf7e6717
service:
title: Service
type: string
example: E911
metric:
title: Metric
type: string
example: number
limit:
title: Limit
type: integer
example: 1
rate:
title: Rate
type: string
example: '5'
country_iso:
title: Country Iso
type: string
example: AU
country_code:
title: Country Code
type: integer
example: 61
country:
title: Country
type: string
description: Use country_iso instead
deprecated: true
direction:
$ref: '#/components/schemas/BundleLimitDirection'
types:
title: Types
type: array
items:
type: string
example: local
created_at:
title: Created At
type: string
format: date
updated_at:
title: Updated At
type: string
format: date
billing_service:
title: Billing Service
type: string
example: emergency
Call:
type: object
title: Call
required:
- call_control_id
- call_leg_id
- call_session_id
- is_alive
- record_type
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768
call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
is_alive: false
call_duration: 50
start_time: '2019-01-23T18:10:02.574Z'
end_time: '2019-01-23T18:11:52.574Z'
record_type: call
properties:
record_type:
type: string
enum:
- call
example: call
call_session_id:
description: ID that is unique to the call session and can be used to correlate webhook events. Call session is
a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of
a transferred call
type: string
example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1
call_leg_id:
description: ID that is unique to the call and can be used to correlate webhook events
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_control_id:
description: Unique identifier and token for controlling the call.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
is_alive:
description: Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is
asynchronous).
type: boolean
example: true
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
call_duration:
description: Indicates the duration of the call in seconds
type: integer
example: 50
start_time:
description: ISO 8601 formatted date indicating when the call started
type: string
example: '2019-01-23T18:10:02.574Z'
end_time:
description: ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive
type: string
example: '2019-01-23T18:11:52.574Z'
CallAIGatherEnded:
type: object
title: Call AI Gather Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.ai_gather.ended
enum:
- call.ai_gather.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Telnyx connection ID used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
message_history:
description: The history of the messages exchanged during the AI gather
type: array
items:
type: object
properties:
content:
type: string
example: Hello, I'm 29 and I live in Paris.
description: The content of the message
role:
type: string
enum:
- assistant
- user
example: user
description: The role of the message sender
result:
type: object
description: The result of the AI gather, its type depends of the `parameters` provided in the command
example:
age: 29
city: Paris
status:
type: string
enum:
- valid
- invalid
example: valid
description: Reflects how command ended.
example:
record_type: event
event_type: call.ai_gather.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
status: valid
message_history:
- content: Hello, can you tell me your age and where you live?
role: assistant
- content: Hello, I'm 29 and I live in Paris?
role: user
result:
age: 29
city: Paris
CallAIGatherEndedEvent:
type: object
title: Call AI Gather Ended Event
properties:
data:
$ref: '#/components/schemas/CallAIGatherEnded'
CallAIGatherMessageHistoryUpdated:
type: object
title: Call AI Gather Message History Updated
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.ai_gather.message_history_updated
enum:
- call.ai_gather.message_history_updated
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Telnyx connection ID used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
message_history:
description: The history of the messages exchanged during the AI gather
type: array
items:
type: object
properties:
content:
type: string
example: Hello, I'm 29 and I live in Paris.
description: The content of the message
role:
type: string
enum:
- assistant
- user
example: user
description: The role of the message sender
example:
record_type: event
event_type: call.ai_gather.message_history_updated
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
message_history:
- content: Hello, can you tell me your age and where you live?
role: assistant
- content: Hello, I'm 29 and I live in Paris?
role: user
CallAIGatherMessageHistoryUpdatedEvent:
type: object
title: Call AI Gather Message History Updated Event
properties:
data:
$ref: '#/components/schemas/CallAIGatherMessageHistoryUpdated'
CallAIGatherPartialResults:
type: object
title: Call AI Gather Partial Results
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.ai_gather.partial_results
enum:
- call.ai_gather.partial_results
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Telnyx connection ID used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
message_history:
description: The history of the messages exchanged during the AI gather
type: array
items:
type: object
properties:
content:
type: string
example: Hello, I'm 29 and I live in Paris.
description: The content of the message
role:
type: string
enum:
- assistant
- user
example: user
description: The role of the message sender
partial_results:
type: object
description: The partial result of the AI gather, its type depends of the `parameters` provided in the command
example:
age: 29
city: Paris
example:
record_type: event
event_type: call.ai_gather.partial_results
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
message_history:
- content: Hello, can you tell me your age and where you live?
role: assistant
- content: Hello, I'm 29 and I live in Paris?
role: user
partial_results:
age: 29
city: Paris
CallAIGatherPartialResultsEvent:
type: object
title: Call AI Gather Partial Results Event
properties:
data:
$ref: '#/components/schemas/CallAIGatherPartialResults'
CallAnswered:
type: object
title: Call Answered
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.answered
enum:
- call.answered
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
custom_headers:
description: Custom headers set on answer command
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
sip_headers:
description: User-to-User and Diversion headers from sip invite.
type: array
example:
- name: User-to-User
value: '1234'
- name: Diversion
value:
items:
$ref: '#/components/schemas/InboundSipHeader'
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
start_time:
type: string
format: date-time
example: '2018-02-02T22:20:27.521992Z'
description: ISO 8601 datetime of when the call started.
state:
type: string
example: answered
enum:
- answered
description: State received from a command.
tags:
description: Array of tags associated to number.
example:
- tag-01
- tag-02
type: array
items:
type: string
example:
record_type: event
event_type: call.answered
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
start_time: '2018-02-02T22:25:27.521992Z'
state: answered
CallAnsweredEvent:
type: object
title: Call Answered Event
properties:
data:
$ref: '#/components/schemas/CallAnswered'
CallAssistantRequest:
type: object
description: AI Assistant configuration and per-call overrides. All fields except `id` are optional. Omitted assistant
fields use the stored configuration. Supplied `voice_settings` and `transcription` objects replace their stored objects
rather than merging individual settings; include every setting you want to retain. `dynamic_variables` are merged,
with request values taking precedence.
required:
- id
properties:
id:
type: string
description: The identifier of the AI assistant to use.
model:
type: string
description: LLM model override for this call. If omitted, the assistant's configured model is used.
example: gpt-4o
name:
type: string
description: Assistant name override for this call.
instructions:
type: string
description: System instructions for the voice assistant. Can be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
This will overwrite the instructions set in the assistant configuration.
example: You are a friendly voice assistant.
greeting:
type: string
maxLength: 3000
description: Initial greeting text spoken when the assistant starts. Can be plain text for any voice or SSML for
`AWS.Polly.` voices. There is a 3,000 character limit.
voice_settings:
$ref: '#/components/schemas/VoiceSettings'
description: Per-call voice configuration. Set the voice identifier in `voice_settings.voice`, not in `assistant.voice`.
If supplied, this object replaces the stored voice settings.
transcription:
$ref: '#/components/schemas/TranscriptionConfig'
description: Per-call speech-to-text configuration for the assistant. If omitted, the stored assistant transcription
configuration is used. If supplied, this object replaces the stored transcription settings. This is separate from
the top-level `transcription` boolean on answer and dial commands.
tools:
type: array
description: Inline tool definitions available to the assistant (webhook, retrieval, transfer, hangup, etc.). Overrides
the assistant's stored tools if provided.
items:
oneOf:
- $ref: '#/components/schemas/BookAppointmentTool'
- $ref: '#/components/schemas/CheckAvailabilityTool'
- $ref: '#/components/schemas/WebhookTool'
- $ref: '#/components/schemas/HangupTool'
- $ref: '#/components/schemas/TransferTool'
- $ref: '#/components/schemas/CallControlRetrievalTool'
discriminator:
propertyName: type
mapping:
book_appointment: '#/components/schemas/BookAppointmentTool'
check_availability: '#/components/schemas/CheckAvailabilityTool'
webhook: '#/components/schemas/WebhookTool'
hangup: '#/components/schemas/HangupTool'
transfer: '#/components/schemas/TransferTool'
retrieval: '#/components/schemas/CallControlRetrievalTool'
llm_api_key_ref:
type: string
description: Integration secret identifier for the LLM provider API key. Use this field to reference an [integration
secret](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret) containing
your LLM provider API key. Supports any LLM provider (OpenAI, Anthropic, etc.).
example: my_llm_api_key
openai_api_key_ref:
type: string
description: Deprecated — use `llm_api_key_ref` instead. Integration secret identifier for the OpenAI API key. This
field is maintained for backward compatibility; `llm_api_key_ref` is the canonical field name and supports all
LLM providers.
deprecated: true
x-sdk-deprecation-message: Use llm_api_key_ref instead
example: my_openai_api_key
dynamic_variables:
type: object
description: Map of dynamic variables and their default values. Dynamic variables can be referenced in instructions,
greeting, and tool definitions using the `{{variable_name}}` syntax. Call-control-agent automatically merges in
`telnyx_call_*` variables (telnyx_call_to, telnyx_call_from, telnyx_conversation_channel, telnyx_agent_target,
telnyx_end_user_target, telnyx_call_caller_id_name) and custom header variables.
additionalProperties:
oneOf:
- type: string
- type: number
- type: boolean
example:
customer_name: John
account_id: ACC-12345
fallback_config:
type: object
description: Fallback LLM configuration used when the primary LLM provider is unavailable.
properties:
model:
type: string
description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.
llm_api_key_ref:
type: string
description: Integration secret identifier for the fallback model API key.
external_llm:
type: object
description: External LLM fallback configuration.
properties:
model:
type: string
description: Model identifier to use with the external LLM endpoint.
base_url:
type: string
description: Base URL for the external LLM endpoint.
llm_api_key_ref:
type: string
description: Integration secret identifier for the external LLM API key.
authentication_method:
type: string
enum:
- token
- certificate
default: token
description: Authentication method used when connecting to the external LLM endpoint.
certificate_ref:
type: string
description: Integration secret identifier for the client certificate used with certificate authentication.
token_retrieval_url:
type: string
description: URL used to retrieve an access token when certificate authentication is enabled.
forward_metadata:
type: boolean
default: false
description: 'When enabled, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint.
Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic
variables are available. For example: `{"extra_metadata":{"customer_name":"Jane","account_id":"acct_789","telnyx_agent_target":"+13125550100","telnyx_end_user_target":"+13125550123"}}`.'
external_llm:
type: object
description: External LLM configuration for bringing your own LLM endpoint.
properties:
model:
type: string
description: Model identifier to use with the external LLM endpoint.
base_url:
type: string
description: Base URL for the external LLM endpoint.
llm_api_key_ref:
type: string
description: Integration secret identifier for the external LLM API key.
authentication_method:
type: string
enum:
- token
- certificate
default: token
description: Authentication method used when connecting to the external LLM endpoint.
certificate_ref:
type: string
description: Integration secret identifier for the client certificate used with certificate authentication.
token_retrieval_url:
type: string
description: URL used to retrieve an access token when certificate authentication is enabled.
forward_metadata:
type: boolean
default: false
description: 'When enabled, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint.
Defaults to false. The chat completion request includes a top-level `extra_metadata` object when dynamic variables
are available. For example: `{"extra_metadata":{"customer_name":"Jane","account_id":"acct_789","telnyx_agent_target":"+13125550100","telnyx_end_user_target":"+13125550123"}}`.'
mcp_servers:
type: array
description: MCP (Model Context Protocol) server configurations for extending the assistant's capabilities with
external tools and data sources.
items:
type: object
properties: {}
observability_settings:
type: object
description: Observability configuration for the assistant session, including Langfuse integration for tracing and
monitoring.
properties: {}
CallBridged:
type: object
title: Call Bridged
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.bridged
enum:
- call.bridged
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.bridged
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
CallBridgedEvent:
type: object
title: Call Bridged Event
properties:
data:
$ref: '#/components/schemas/CallBridged'
CallControlApplication:
type: object
title: Call Control Application
properties:
active:
type: boolean
description: Specifies whether the connection can be used.
default: true
anchorsite_override:
type: string
description: 'Latency directs Telnyx to route media through the site with the lowest round-trip time
to the user''s connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying
a site to handle all media.
'
enum:
- Latency
- Chicago, IL
- Ashburn, VA
- San Jose, CA
- London, UK
- Chennai, IN
- Amsterdam, Netherlands
- Toronto, Canada
- Sydney, Australia
example: Amsterdam, Netherlands
default: Latency
application_name:
type: string
description: A user-assigned name to help manage the application.
example: call-router
created_at:
type: string
description: ISO 8601 formatted date of when the resource was created
example: '2018-02-02T22:25:27.521Z'
dtmf_type:
type: string
description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx
will be accepted in all formats.
enum:
- RFC 2833
- Inband
- SIP INFO
example: Inband
default: RFC 2833
first_command_timeout:
type: boolean
description: Specifies whether calls to phone numbers associated with this connection should hangup after timing
out.
example: true
default: false
first_command_timeout_secs:
type: integer
description: Specifies how many seconds to wait before timing out a dial command.
example: 10
default: 30
tags:
type: array
items:
type: string
description: Tags assigned to the Call Control Application.
id:
type: string
example: '1293384261075731499'
x-format: int64
inbound:
$ref: '#/components/schemas/CallControlApplicationInbound'
outbound:
$ref: '#/components/schemas/CallControlApplicationOutbound'
record_type:
type: string
enum:
- call_control_application
default: call_control_application
updated_at:
type: string
description: ISO 8601 formatted date of when the resource was last updated
example: '2018-02-02T22:25:27.521Z'
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_event_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as `https`.
example: https://failover.example.com
default: ''
webhook_event_url:
type: string
format: url
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as `https`.
example: https://example.com
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this Call Control Application.
default: false
redact_dtmf_debug_logging:
type: boolean
description: When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered
through IVR interactions.
example: true
default: false
example:
active: false
anchorsite_override: Latency
application_name: call-router
created_at: '2018-02-02T22:25:27.521Z'
dtmf_type: Inband
first_command_timeout: true
first_command_timeout_secs: 10
id: '1293384261075731499'
inbound:
channel_limit: 10
shaken_stir_enabled: true
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
record_type: call_control_application
updated_at: '2018-02-02T22:25:27.521Z'
webhook_api_version: '1'
webhook_event_failover_url: https://failover.example.com
webhook_event_url: https://example.com
webhook_timeout_secs: 25
call_cost_in_webhooks: false
redact_dtmf_debug_logging: true
CallControlApplicationInbound:
type: object
title: Call Control Application Inbound
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
example: 10
default: null
shaken_stir_enabled:
type: boolean
description: When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.
default: false
example: false
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a
phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from
any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
example: example
default: null
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
example: only_my_connections
default: from_anyone
CallControlApplicationOutbound:
type: object
title: Call Control Application Outbound
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
example: 10
default: null
outbound_voice_profile_id:
type: string
description: Identifies the associated outbound voice profile.
example: '1293384261075731499'
x-format: int64
CallControlBucketIds:
properties:
bucket_ids:
items:
type: string
type: array
title: Bucket Ids
max_num_results:
description: The maximum number of results to retrieve as context for the language model.
type: integer
type: object
required:
- bucket_ids
title: BucketIds
CallControlCommandResult:
type: object
title: Call Control Command Result
example:
result: ok
properties:
result:
type: string
example: ok
CallControlCommandResultWithConversationId:
type: object
title: Call Control Command Result With Conversation ID
example:
result: ok
conversation_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
properties:
result:
type: string
example: ok
conversation_id:
type: string
format: uuid
example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
description: The ID of the conversation created by the command.
CallControlCommandResultWithConversationRelayId:
type: object
title: Call Control Command Result With Conversation Relay ID
example:
result: ok
conversation_relay_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
properties:
result:
type: string
example: ok
conversation_relay_id:
type: string
example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
description: The ID of the Conversation Relay session created by the command.
CallControlCommandResultWithRecordingId:
type: object
title: Call Control Command Result With Recording ID
example:
result: ok
recording_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
properties:
result:
type: string
example: ok
recording_id:
type: string
format: uuid
example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
description: The ID of the recording. Only present when the record parameter is set to record-from-answer.
CallControlId:
type: string
example: v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA
CallControlRetrievalTool:
properties:
type:
type: string
enum:
- retrieval
retrieval:
$ref: '#/components/schemas/CallControlBucketIds'
type: object
required:
- type
- retrieval
title: RetrievalTool
CallControlTransferToolParams:
properties:
targets:
oneOf:
- type: array
items:
type: object
properties:
name:
type: string
description: The name of the target.
example: Support
to:
type: string
description: The destination number or SIP URI of the call.
example: '+13129457420'
required:
- to
- type: string
description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables
webhook and resolves to an array of target objects at runtime.
example: '{{ targets }}'
description: The different possible targets of the transfer. The assistant will be able to choose one of the targets
to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned
by the dynamic variables webhook and resolves to an array of target objects at runtime.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
type: object
required:
- targets
- from
title: TransferToolParams
CallControlWebhookToolParams:
properties:
name:
type: string
description: The name of the tool.
description:
type: string
description: The description of the tool.
url:
description: 'The URL of the external tool to be called. This URL is going to be used by the assistant. The URL
can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will
be provided by the assistant if `path_parameters` are provided with the `id` attribute.'
type: string
example: https://example.com/api/v1/function
method:
description: The HTTP method to be used when calling the external tool.
type: string
enum:
- GET
- POST
- PUT
- DELETE
- PATCH
default: POST
headers:
description: The headers to be sent to the external tool.
type: array
items:
type: object
properties:
name:
type: string
value:
description: The value of the header. Note that we support mustache templating for the value. For example
you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the
integration secret as the bearer token.
type: string
body_parameters:
description: The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will
be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema)
for documentation about the format
type: object
properties:
properties:
description: The properties of the body parameters.
type: object
required:
description: The required properties of the body parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
age:
description: The age of the customer.
type: integer
location:
description: The location of the customer.
type: string
required:
- age
- location
type: object
path_parameters:
description: The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will
be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON
Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format
type: object
properties:
properties:
description: The properties of the path parameters.
type: object
required:
description: The required properties of the path parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
id:
description: The id of the customer.
type: string
required:
- id
type: object
query_parameters:
description: The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters
will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema)
for documentation about the format
type: object
properties:
properties:
description: The properties of the query parameters.
type: object
required:
description: The required properties of the query parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
page:
description: The page number.
type: integer
required:
- page
type: object
type: object
required:
- url
- name
- description
title: WebhookToolParams
CallCost:
type: object
title: Call Cost
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.cost
enum:
- call.cost
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Unique identifier of the event.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command. Base64-encoded.
billing_group_id:
type:
- string
- 'null'
example: f5586561-8ff0-4291-a0ac-84fe544797bd
description: Identifies the billing group associated with the call.
status:
type: string
example: success
enum:
- success
- error
description: The status of the cost calculation (`success` or `error`).
total_cost:
type:
- string
- 'null'
example: '0.0106'
description: The total cost of the call.
billed_duration_secs:
type:
- integer
- 'null'
example: 120
description: The longest billed duration across all cost parts, in seconds.
cost_parts:
type: array
description: Breakdown of costs by call part.
items:
$ref: '#/components/schemas/CallCostPart'
example:
- call_part: sip-trunking
rate: '0.0050'
cost: '0.0050'
currency: USD
billed_duration_secs: 60
- call_part: call-recording
rate: '0.00190'
cost: '0.0038'
currency: USD
billed_duration_secs: 120
- call_part: call-control
rate: '0.00180'
cost: '0.0018'
currency: USD
billed_duration_secs: 60
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
example:
record_type: event
event_type: call.cost
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
billing_group_id: f5586561-8ff0-4291-a0ac-84fe544797bd
status: success
total_cost: '0.0106'
billed_duration_secs: 120
cost_parts:
- call_part: sip-trunking
rate: '0.0050'
cost: '0.0050'
currency: USD
billed_duration_secs: 60
- call_part: call-recording
rate: '0.00190'
cost: '0.0038'
currency: USD
billed_duration_secs: 120
- call_part: call-control
rate: '0.00180'
cost: '0.0018'
currency: USD
billed_duration_secs: 60
occurred_at: '2018-02-02T22:25:27.521992Z'
CallCostEvent:
type: object
title: Call Cost Event
properties:
data:
$ref: '#/components/schemas/CallCost'
CallCostPart:
type: object
title: Call Cost Part
properties:
call_part:
type: string
example: call-control
description: The product component this cost applies to. Values are determined by the billing system (e.g. sip-trunking,
call-control, call-recording). Not a fixed set — new values may appear as products evolve.
rate:
type: string
example: '0.00180'
description: The per-minute rate applied.
cost:
type: string
example: '0.0018'
description: The cost for this part of the call.
currency:
type: string
example: USD
description: The currency of the cost.
billed_duration_secs:
type: integer
example: 180
description: The billed duration in seconds for this part of the call.
CallDeepfakeDetectionError:
type: object
title: Call Deepfake Detection Error
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.deepfake_detection.error
enum:
- call.deepfake_detection.error
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
format: uuid
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
format: uuid
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type:
- string
- 'null'
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
error_message:
type: string
enum:
- detection_timeout
- rtp_timeout
- dfd_connection_error
- dfd_stream_error
description: The error that occurred. 'detection_timeout' = no DFD response received, 'rtp_timeout' = no RTP
audio received, 'dfd_connection_error'/'dfd_stream_error' = service connectivity issues.
example:
record_type: event
event_type: call.deepfake_detection.error
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
error_message: detection_timeout
CallDeepfakeDetectionErrorEvent:
type: object
title: Call Deepfake Detection Error Event
properties:
data:
$ref: '#/components/schemas/CallDeepfakeDetectionError'
CallDeepfakeDetectionResult:
type: object
title: Call Deepfake Detection Result
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.deepfake_detection.result
enum:
- call.deepfake_detection.result
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
format: uuid
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
format: uuid
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type:
- string
- 'null'
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
result:
type: string
enum:
- real
- fake
- silence_timeout
description: Detection outcome. 'real' = human voice, 'fake' = AI-generated voice, 'silence_timeout' = no analyzable
speech detected before timeout.
score:
type:
- number
- 'null'
format: float
description: Probability that the audio is AI-generated, from 0.0 (likely real) to 1.0 (likely deepfake). Based
on the model's aggregated confidence across analyzed audio frames. Null for silence_timeout.
consistency:
type:
- number
- 'null'
format: float
minimum: 0
maximum: 100
description: Percentage (0-100) indicating how consistently the model classified the audio across frames. High
consistency (>90%) means confident classification throughout; low consistency suggests mixed signals. Null
for silence_timeout.
example:
record_type: event
event_type: call.deepfake_detection.result
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
result: fake
score: 0.87
consistency: 94.5
CallDeepfakeDetectionResultEvent:
type: object
title: Call Deepfake Detection Result Event
properties:
data:
$ref: '#/components/schemas/CallDeepfakeDetectionResult'
CallDtmfReceived:
type: object
title: Call DTMF Received
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.dtmf.received
enum:
- call.dtmf.received
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Identifies the type of resource.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
digit:
type: string
example: '#'
description: The received DTMF digit or symbol.
example:
record_type: event
event_type: call.dtmf.received
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
digit: '#'
CallDtmfReceivedEvent:
type: object
title: Call DTMF Received Event
properties:
data:
$ref: '#/components/schemas/CallDtmfReceived'
CallEnqueued:
type: object
title: Call Enqueued
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.enqueued
enum:
- call.enqueued
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
queue:
type: string
example: support
description: The name of the queue
current_position:
type: integer
example: 7
description: Current position of the call in the queue.
queue_avg_wait_time_secs:
type: integer
example: 60
description: Average time call spends in the queue in seconds.
example:
record_type: event
event_type: call.enqueued
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
queue: support
current_position: 5
CallEnqueuedEvent:
type: object
title: Call Enqueued Event
properties:
data:
$ref: '#/components/schemas/CallEnqueued'
CallEvent:
type: object
title: Call Event
required:
- record_type
- call_leg_id
- call_session_id
- event_timestamp
- name
- type
- metadata
properties:
record_type:
type: string
enum:
- call_event
example: call_event
call_leg_id:
type: string
description: Uniquely identifies an individual call leg.
example: 308fe500-5213-11e9-ace7-02420a0f0668
call_session_id:
type: string
description: Uniquely identifies the call control session. A session may include multiple call leg events.
example: 308fec30-5213-11e9-9d3f-02420a0f0668
event_timestamp:
type: string
description: Event timestamp
example: '2019-03-29T11:10:19.127783Z'
name:
type: string
description: Event name
example: call.hangup
type:
type: string
description: Event type
enum:
- command
- webhook
example: webhook
metadata:
type: object
description: Event metadata, which includes raw event, and extra information based on event type
example:
record_type: call_event
call_leg_id: 308fe500-5213-11e9-ace7-02420a0f0668
call_session_id: 308fec30-5213-11e9-9d3f-02420a0f0668
event_timestamp: '2019-03-29T11:10:19.127783Z'
name: call.hangup
type: webhook
metadata: {}
CallForkStarted:
type: object
title: Call Fork Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.fork.started
enum:
- call.fork.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_control_id:
type: string
example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
description: Unique ID for controlling the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
stream_type:
type: string
example: decrypted
enum:
- decrypted
description: Type of media streamed. It can be either 'raw' or 'decrypted'.
example:
record_type: event
event_type: call.fork.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_type: decrypted
CallForkStartedEvent:
type: object
title: Call Fork Started Event
properties:
data:
$ref: '#/components/schemas/CallForkStarted'
CallForkStopped:
type: object
title: Call Fork Stopped
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.fork.stopped
enum:
- call.fork.stopped
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_control_id:
type: string
example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
description: Unique ID for controlling the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
stream_type:
type: string
example: decrypted
enum:
- decrypted
description: Type of media streamed. It can be either 'raw' or 'decrypted'.
example:
record_type: event
event_type: call.fork.stopped
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_type: decrypted
CallForkStoppedEvent:
type: object
title: Call Fork Stopped Event
properties:
data:
$ref: '#/components/schemas/CallForkStopped'
CallForwarding:
description: The call forwarding settings for a phone number.
type: object
properties:
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
example: true
forwards_to:
type: string
description: The phone number to which inbound calls to this number are forwarded. Inbound calls will not be forwarded
if this field is left blank. If set, must be a +E.164-formatted phone number.
forwarding_type:
type: string
description: Call forwarding type. 'forwards_to' must be set for this to have an effect.
enum:
- always
- on-failure
example: always
example:
call_forwarding_enabled: true
forwards_to: '+13035559123'
forwarding_type: always
CallGatherEnded:
type: object
title: Call Gather Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.gather.ended
enum:
- call.gather.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
digits:
type: string
example: '5503'
description: The received DTMF digit or symbol.
status:
type: string
enum:
- valid
- invalid
- call_hangup
- cancelled
- cancelled_amd
- timeout
example: valid
description: Reflects how command ended.
example:
record_type: event
event_type: call.gather.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
digits: '123'
status: valid
CallGatherEndedEvent:
type: object
title: Call Gather Ended Event
properties:
data:
$ref: '#/components/schemas/CallGatherEnded'
CallHangup:
type: object
title: Call Hangup
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.hangup
enum:
- call.hangup
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
custom_headers:
description: Custom headers set on answer command
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
sip_headers:
description: User-to-User and Diversion headers from sip invite.
type: array
example:
- name: User-to-User
value: '1234'
- name: Diversion
value:
items:
$ref: '#/components/schemas/InboundSipHeader'
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
start_time:
type: string
format: date-time
example: '2018-02-02T22:20:27.521992Z'
description: ISO 8601 datetime of when the call started.
state:
type: string
example: hangup
enum:
- hangup
description: State received from a command.
tags:
description: Array of tags associated to number.
example:
- tag-01
- tag-02
type: array
items:
type: string
hangup_cause:
type: string
example: call_rejected
enum:
- call_rejected
- normal_clearing
- originator_cancel
- timeout
- time_limit
- user_busy
- not_found
- no_answer
- unspecified
description: The reason the call was ended (`call_rejected`, `normal_clearing`, `originator_cancel`, `timeout`,
`time_limit`, `user_busy`, `not_found`, `no_answer` or `unspecified`).
hangup_source:
type: string
example: caller
enum:
- caller
- callee
- unknown
description: The party who ended the call (`callee`, `caller`, `unknown`).
sip_hangup_cause:
type: string
example: '603'
description: The reason the call was ended (SIP response code). If the SIP response is unavailable (in inbound
calls for example) this is set to `unspecified`.
call_quality_stats:
type:
- object
- 'null'
description: Call quality statistics aggregated from the CHANNEL_HANGUP_COMPLETE event. Only includes metrics
that are available (filters out nil values). Returns nil if no metrics are available.
example:
inbound:
jitter_max_variance: '2.74'
jitter_packet_count: '0'
mos: '4.50'
packet_count: '591'
skip_packet_count: '9'
outbound:
packet_count: '0'
skip_packet_count: '0'
properties:
inbound:
type: object
description: Inbound call quality statistics.
properties:
jitter_max_variance:
type: string
description: Maximum jitter variance for inbound audio.
example: '2.74'
jitter_packet_count:
type: string
description: Number of packets used for jitter calculation on inbound audio.
example: '0'
mos:
type: string
description: Mean Opinion Score (MOS) for inbound audio quality.
example: '4.50'
packet_count:
type: string
description: Total number of inbound audio packets.
example: '591'
skip_packet_count:
type: string
description: Number of skipped inbound packets (packet loss).
example: '9'
outbound:
type: object
description: Outbound call quality statistics.
properties:
packet_count:
type: string
description: Total number of outbound audio packets.
example: '0'
skip_packet_count:
type: string
description: Number of skipped outbound packets (packet loss).
example: '0'
example:
record_type: event
event_type: call.hangup
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
start_time: '2018-02-02T22:20:27.521992Z'
state: hangup
hangup_cause: call_rejected
hangup_source: caller
sip_hangup_cause: '603'
call_quality_stats:
inbound:
jitter_max_variance: '2.74'
jitter_packet_count: '0'
mos: '4.50'
packet_count: '591'
skip_packet_count: '9'
outbound:
packet_count: '0'
skip_packet_count: '0'
CallHangupEvent:
type: object
title: Call Hangup Event
properties:
data:
$ref: '#/components/schemas/CallHangup'
CallHold:
type: object
title: Call Hold
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.hold
enum:
- call.hold
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.hold
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
CallHoldEvent:
type: object
title: Call Hold Event
properties:
data:
$ref: '#/components/schemas/CallHold'
CallInitiated:
type: object
title: Call Initiated
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.initiated
enum:
- call.initiated
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
connection_codecs:
type: string
example: G722,PCMU,PCMA
description: The list of comma-separated codecs enabled for the connection.
offered_codecs:
type: string
example: G722,PCMU,PCMA
description: The list of comma-separated codecs offered by caller.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
custom_headers:
description: Custom headers from sip invite
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
sip_headers:
description: User-to-User and Diversion headers from sip invite.
type: array
example:
- name: User-to-User
value: '1234'
- name: Diversion
value:
items:
$ref: '#/components/schemas/InboundSipHeader'
shaken_stir_attestation:
type: string
example: A
description: SHAKEN/STIR attestation level.
shaken_stir_validated:
type: boolean
example: true
description: Whether attestation was successfully validated or not.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
caller_id_name:
type: string
example: '+35319605860'
description: Caller id.
call_screening_result:
type: string
example: spam_likely
description: Call screening result.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
direction:
type: string
example: incoming
enum:
- incoming
- outgoing
description: Whether the call is `incoming` or `outgoing`.
state:
type: string
example: parked
enum:
- parked
- bridging
description: State received from a command.
start_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the call started.
tags:
description: Array of tags associated to number.
example:
- tag-01
- tag-02
type: array
items:
type: string
example:
record_type: event
event_type: call.initiated
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
direction: incoming
state: parked
CallInitiatedEvent:
type: object
title: Call Initiated Event
properties:
data:
$ref: '#/components/schemas/CallInitiated'
CallLeftQueue:
type: object
title: Call Left Queue
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.dequeued
enum:
- call.dequeued
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
queue:
type: string
example: support
description: The name of the queue
queue_position:
type: integer
example: 7
description: Last position of the call in the queue.
reason:
type: string
description: The reason for leaving the queue
example: bridged
enum:
- bridged
- bridging-in-process
- hangup
- leave
- timeout
wait_time_secs:
type: integer
example: 60
description: Time call spent in the queue in seconds.
example:
record_type: event
event_type: call.dequeued
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
queue: support
queue_position: 3
reason: leave
CallLeftQueueEvent:
type: object
title: Call Left Queue Event
properties:
data:
$ref: '#/components/schemas/CallLeftQueue'
CallMachineDetectionEnded:
type: object
title: Call Machine Detection Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.machine.detection.ended
enum:
- call.machine.detection.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
result:
type: string
example: machine
enum:
- human
- machine
- not_sure
description: Answering machine detection result.
example:
record_type: event
event_type: call.machine.detection.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: human
CallMachineDetectionEndedEvent:
type: object
title: Call Machine Detection Ended Event
properties:
data:
$ref: '#/components/schemas/CallMachineDetectionEnded'
CallMachineGreetingEnded:
type: object
title: Call Machine Greeting Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.machine.greeting.ended
enum:
- call.machine.greeting.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
result:
type: string
example: ended
enum:
- beep_detected
- ended
- not_sure
description: Answering machine greeting ended result.
example:
record_type: event
event_type: call.machine.greeting.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: ended
CallMachineGreetingEndedEvent:
type: object
title: Call Machine Greeting Ended Event
properties:
data:
$ref: '#/components/schemas/CallMachineGreetingEnded'
CallMachinePremiumCallScreeningDetected:
type: object
title: Call Machine Premium Call Screening Detected
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.machine.premium.call_screening.detected
enum:
- call.machine.premium.call_screening.detected
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
result:
type: string
example: screening
enum:
- screening
description: Apple Call Screening detection result. Sent when an Apple Call Screening tone is detected; Premium
Answering Machine Detection is restarted on the screened call afterwards.
example:
record_type: event
event_type: call.machine.premium.call_screening.detected
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: screening
CallMachinePremiumCallScreeningDetectedEvent:
type: object
title: Call Machine Premium Call Screening Detected Event
properties:
data:
$ref: '#/components/schemas/CallMachinePremiumCallScreeningDetected'
CallMachinePremiumDetectionEnded:
type: object
title: Call Machine Premium Detection Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.machine.premium.detection.ended
enum:
- call.machine.premium.detection.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
result:
type: string
example: machine
enum:
- human_residence
- human_business
- machine
- silence
- fax_detected
- not_sure
description: Premium Answering Machine Detection result.
example:
record_type: event
event_type: call.machine.premium.detection.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: machine
CallMachinePremiumDetectionEndedEvent:
type: object
title: Call Machine Premium Detection Ended Event
properties:
data:
$ref: '#/components/schemas/CallMachinePremiumDetectionEnded'
CallMachinePremiumDetectionStarted:
type: object
title: Call Machine Premium Detection Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.machine.premium.detection.started
enum:
- call.machine.premium.detection.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.machine.premium.detection.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
CallMachinePremiumDetectionStartedEvent:
type: object
title: Call Machine Premium Detection Started Event
properties:
data:
$ref: '#/components/schemas/CallMachinePremiumDetectionStarted'
CallMachinePremiumGreetingEnded:
type: object
title: Call Machine Premium Greeting Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.machine.premium.greeting.ended
enum:
- call.machine.premium.greeting.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
result:
type: string
example: beep_detected
enum:
- beep_detected
- no_beep_detected
- prompt_ended
description: Premium Answering Machine Greeting Ended result. `prompt_ended` is only sent when `answering_machine_detection`
is `premium_ios_call_screening_detection` and the iOS call-screening prompt ends without a beep.
example:
record_type: event
event_type: call.machine.premium.greeting.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: beep_detected
CallMachinePremiumGreetingEndedEvent:
type: object
title: Call Machine Premium Greeting Ended Event
properties:
data:
$ref: '#/components/schemas/CallMachinePremiumGreetingEnded'
CallPaymentCompleted:
type: object
title: Call Payment Completed
properties:
record_type:
type: string
enum:
- event
example: event
description: Identifies the type of the resource.
event_type:
type: string
enum:
- call.payment.completed
example: call.payment.completed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Unique identifier for the event.
occurred_at:
type: string
format: date-time
example: '2026-07-27T07:00:00.000000Z'
description: ISO 8601 datetime when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
description: Call ID used to issue commands via Call Control API.
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id:
type: string
description: Call Control App ID used in the call.
example: 7267xxxxxxxxxxxxxx
call_leg_id:
type: string
description: ID unique to the call leg.
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id:
type: string
description: ID shared by related call legs in the same call session.
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
client_state:
type: string
description: Base64-encoded state received from the command.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
from:
type: string
description: Number or SIP URI placing the call.
example: +353****5860
to:
type: string
description: Destination number or SIP URI of the call.
example: +131****7420
payment_connector:
type: string
description: Name of the Pay connector used.
example: Default
payment_method:
type: string
enum:
- credit-card
- ach-debit
description: Payment method being collected.
example: credit-card
payment_card_type:
type: string
enum:
- visa
- mastercard
- amex
- optima
- discover
- diners-club
- jcb
- maestro
- enroute
description: Detected card type. Present only for the recognized card brands listed below.
example: visa
payment_card_number:
type: string
description: Masked card number with only the last four digits visible.
example: xxxxxxxxxxxx1111
expiration_date:
type: string
description: Card expiration date in MMYY format.
example: '1230'
security_code:
type: string
description: Fully masked card security code.
example: xxx
payment_card_postal_code:
type: string
description: Billing postal code collected from the caller.
example: '10001'
bank_account_number:
type: string
description: Masked bank account number with only the last two digits visible.
example: '********34'
bank_routing_number:
type: string
description: Bank routing number collected from the caller.
example: '110000000'
bank_account_type:
type: string
description: Bank account type, when available.
example: consumer-checking
result:
type: string
enum:
- success
- payment-connector-error
- internal-error
- too-many-failed-attempts
- cancelled
description: Final Pay session result.
example: success
charge_id:
type: string
description: Charge identifier returned for a successful charge transaction.
example: ch_abc123
token_id:
type: string
description: Token identifier returned for a successful tokenize transaction.
example: tok_abc123
payment_confirmation_code:
type: string
description: Payment confirmation code returned by the processor, when available.
example: CONF-98765
payment_error:
type: string
description: Step-level or processor error associated with the final result.
example: pay_action_failed
pay_error_code:
type: string
description: Error code returned by the payment connector or processor.
example: card_declined
connector_error:
description: Additional connector error information, when supplied by the processor.
oneOf:
- type: string
- type: object
additionalProperties: true
example:
record_type: event
event_type: call.payment.completed
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-07-27T07:00:00.000000Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
from: +353****5860
to: +131****7420
payment_connector: Default
payment_method: credit-card
payment_card_type: visa
payment_card_number: xxxxxxxxxxxx1111
expiration_date: '1230'
security_code: xxx
payment_card_postal_code: '10001'
result: success
charge_id: ch_abc123
payment_confirmation_code: CONF-98765
CallPaymentCompletedEvent:
type: object
title: Call Payment Completed Event
properties:
data:
$ref: '#/components/schemas/CallPaymentCompleted'
CallPaymentProgress:
type: object
title: Call Payment Progress
properties:
record_type:
type: string
enum:
- event
example: event
description: Identifies the type of the resource.
event_type:
type: string
enum:
- call.payment.progress
example: call.payment.progress
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Unique identifier for the event.
occurred_at:
type: string
format: date-time
example: '2026-07-27T07:00:00.000000Z'
description: ISO 8601 datetime when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
description: Call ID used to issue commands via Call Control API.
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id:
type: string
description: Call Control App ID used in the call.
example: 7267xxxxxxxxxxxxxx
call_leg_id:
type: string
description: ID unique to the call leg.
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id:
type: string
description: ID shared by related call legs in the same call session.
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
client_state:
type: string
description: Base64-encoded state received from the command.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
from:
type: string
description: Number or SIP URI placing the call.
example: +353****5860
to:
type: string
description: Destination number or SIP URI of the call.
example: +131****7420
payment_connector:
type: string
description: Name of the Pay connector used.
example: Default
payment_method:
type: string
enum:
- credit-card
- ach-debit
description: Payment method being collected.
example: credit-card
payment_card_type:
type: string
enum:
- visa
- mastercard
- amex
- optima
- discover
- diners-club
- jcb
- maestro
- enroute
description: Detected card type. Present only for the recognized card brands listed below.
example: visa
payment_card_number:
type: string
description: Masked card number with only the last four digits visible.
example: xxxxxxxxxxxx1111
expiration_date:
type: string
description: Card expiration date in MMYY format.
example: '1230'
security_code:
type: string
description: Fully masked card security code.
example: xxx
payment_card_postal_code:
type: string
description: Billing postal code collected from the caller.
example: '10001'
bank_account_number:
type: string
description: Masked bank account number with only the last two digits visible.
example: '********34'
bank_routing_number:
type: string
description: Bank routing number collected from the caller.
example: '110000000'
bank_account_type:
type: string
description: Bank account type, when available.
example: consumer-checking
payment_step:
type: string
enum:
- payment-card-number
- expiration-date
- postal-code
- security-code
- bank-routing-number
- bank-account-number
- payment-processing
description: Current payment collection or processing step.
example: payment-card-number
payment_status:
type: string
enum:
- completed
- failed
- processing
description: Status of the current payment step.
example: completed
attempt:
type: integer
format: int32
minimum: 1
maximum: 3
description: Current 1-based attempt number for the step.
example: 1
error_type:
type: string
enum:
- timeout
- invalid-card-number
- invalid-card-type
- invalid-date
- invalid-security-code
- invalid-postal-code
- invalid-bank-routing-number
- invalid-bank-account-number
- input-matching-failed
description: Step-level error when payment collection fails.
example: invalid-card-number
example:
record_type: event
event_type: call.payment.progress
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-07-27T07:00:00.000000Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
from: +353****5860
to: +131****7420
payment_connector: Default
payment_method: credit-card
payment_step: payment-card-number
payment_status: completed
attempt: 1
payment_card_type: visa
payment_card_number: xxxxxxxxxxxx1111
CallPaymentProgressEvent:
type: object
title: Call Payment Progress Event
properties:
data:
$ref: '#/components/schemas/CallPaymentProgress'
CallPlaybackEnded:
type: object
title: Call Playback Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.playback.ended
enum:
- call.playback.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
media_url:
type: string
example: http://example.com/audio.wav
description: The audio URL being played back, if audio_url has been used to start.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The name of the audio media file being played back, if media_name has been used to start.
overlay:
type: boolean
example: false
description: Whether the stopped audio was in overlay mode or not.
status:
type: string
enum:
- file_not_found
- call_hangup
- unknown
- cancelled
- cancelled_amd
- completed
- failed
example: completed
description: Reflects how command ended.
status_detail:
type: string
example: Received curl error 22 HTTP error code 404 trying to fetch http://mediaurl.com.
description: Provides details in case of failure.
example:
record_type: event
event_type: call.playback.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
media_name: my_media_uploaded_to_media_storage_api
overlay: false
status: completed
CallPlaybackEndedEvent:
type: object
title: Call Playback Ended Event
properties:
data:
$ref: '#/components/schemas/CallPlaybackEnded'
CallPlaybackStarted:
type: object
title: Call Playback Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.playback.started
enum:
- call.playback.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
media_url:
type: string
example: http://example.com/audio.wav
description: The audio URL being played back, if audio_url has been used to start.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The name of the audio media file being played back, if media_name has been used to start.
overlay:
type: boolean
example: false
description: Whether the audio is going to be played in overlay mode or not.
example:
record_type: event
event_type: call.playback.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
media_url: http://example.com/audio.wav
overlay: false
CallPlaybackStartedEvent:
type: object
title: Call Playback Started Event
properties:
data:
$ref: '#/components/schemas/CallPlaybackStarted'
CallReason:
type: object
properties:
reason:
type: string
maxLength: 64
example: Appointment reminders
created_at:
type: string
format: date-time
example: '2026-04-26T18:06:51.940749Z'
readOnly: true
CallReasonReference:
type: object
description: Pre-vetted call-reason library entry.
properties:
id:
type: string
format: uuid
example: d29914a4-3c93-440c-af72-03778f442522
readOnly: true
reason:
type: string
example: Account Alert
description:
type: string
example: Alert about account status or changes
CallReasonReferenceList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/CallReasonReference'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
CallRecording:
description: The call recording settings for a phone number.
type: object
properties:
inbound_call_recording_enabled:
type: boolean
default: false
description: When enabled, any inbound call to this number will be recorded.
inbound_call_recording_format:
type: string
enum:
- wav
- mp3
default: wav
description: The audio file format for calls being recorded.
inbound_call_recording_channels:
type: string
enum:
- single
- dual
default: single
description: When using 'dual' channels, final audio file will be stereo recorded with the first leg on channel
A, and the rest on channel B.
example:
inbound_call_recording_enabled: true
inbound_call_recording_format: wav
inbound_call_recording_channels: single
CallRecordingSaved:
type: object
title: Call Recording Saved
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.recording.saved
enum:
- call.recording.saved
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
recording_started_at:
type: string
format: date-time
example: '2018-02-02T22:20:27.521992Z'
description: ISO 8601 datetime of when recording started.
recording_ended_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when recording ended.
channels:
type: string
example: single
enum:
- single
- dual
description: Whether recording was recorded in `single` or `dual` channel.
recording_urls:
type: object
description: Recording URLs in requested format. These URLs are valid for 10 minutes. After 10 minutes, you
may retrieve recordings via API using Reports -> Call Recordings documentation, or via Mission Control under
Reporting -> Recordings.
properties:
mp3:
type:
- string
- 'null'
example: http://example.com/recording.mp3
description: Recording URL in requested `mp3` format.
wav:
type:
- string
- 'null'
example: http://example.com/recording.wav
description: Recording URL in requested `wav` format.
public_recording_urls:
type: object
description: Recording URLs in requested format. The URL is valid for as long as the file exists. For security
purposes, this feature is activated on a per request basis. Please contact customer support with your Account
ID to request activation.
properties:
mp3:
type:
- string
- 'null'
example: http://example.com/recording.mp3
description: Recording URL in requested `mp3` format.
wav:
type:
- string
- 'null'
example: http://example.com/recording.wav
description: Recording URL in requested `wav` format.
example:
record_type: event
event_type: call.recording.saved
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
recording_started_at: '2018-02-02T22:20:27.521992Z'
recording_ended_at: '2018-02-02T22:20:27.521992Z'
channels: single
recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
public_recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
CallRecordingSavedEvent:
type: object
title: Call Recording Saved Event
properties:
data:
$ref: '#/components/schemas/CallRecordingSaved'
CallReferCompleted:
type: object
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.refer.completed
enum:
- call.refer.completed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
description: Unique ID for controlling the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
sip_notify_response:
type: integer
example: 200
description: SIP NOTIFY event status for tracking the REFER attempt.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.refer.completed
id: 4ce4366d-8d87-44be-a00b-942154e9c5f5
occurred_at: '2020-03-30T13:29:44.650000Z'
payload:
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969
call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id: '1289082222292239760'
from: '+35319605860'
sip_notify_response: 200
to: '+13129457420'
CallReferCompletedEvent:
type: object
title: Call Refer Completed Event
properties:
data:
$ref: '#/components/schemas/CallReferCompleted'
CallReferFailed:
type: object
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.refer.failed
enum:
- call.refer.failed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
description: Unique ID for controlling the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
sip_notify_response:
type: integer
example: 603
description: SIP NOTIFY event status for tracking the REFER attempt.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.refer.failed
id: fbeb70e0-54eb-4e26-8d19-56b43e66f754
occurred_at: '2020-03-30T13:29:42.130013Z'
payload:
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969
call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id: '1289082222292239760'
from: '+35319605860'
sip_notify_response: 603
to: '+13129457420'
CallReferFailedEvent:
type: object
title: Call Refer Failed Event
properties:
data:
$ref: '#/components/schemas/CallReferFailed'
CallReferStarted:
type: object
title: Call Refer Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.refer.started
enum:
- call.refer.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
description: Unique ID for controlling the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
sip_notify_response:
type: integer
example: 100
description: SIP NOTIFY event status for tracking the REFER attempt.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.refer.started
id: fbeb70e0-54eb-4e26-8d19-56b43e66f754
occurred_at: '2020-03-30T13:29:42.130013Z'
payload:
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969
call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id: '1289082222292239760'
from: '+35319605860'
sip_notify_response: 100
to: '+13129457420'
CallReferStartedEvent:
type: object
title: Call Refer Started Event
properties:
data:
$ref: '#/components/schemas/CallReferStarted'
CallRequest:
type: object
title: Dial Request
required:
- connection_id
- to
- from
example:
to: +18005550100 or sip:username@sip.telnyx.com;secure=srtp
from: '+18005550101'
from_display_name: Company Name
connection_id: 7267xxxxxxxxxxxxxx
conference_config:
conference_name: telnyx-conference
start_conference_on_enter: true
audio_url: http://www.example.com/sounds/greeting.wav
send_digits_on_answer: wwww200
timeout_secs: 60
time_limit_secs: 60
webhook_url: https://www.example.com/server-b/
webhook_url_method: POST
webhook_urls:
call.hangup:
- https://www.example.com/webhooks/hangup
call.bridge:
- https://www.example.com/webhooks/bridge
webhook_urls_method: POST
webhook_retries_policies:
call.hangup:
retries_ms:
- 1000
- 2000
- 5000
answering_machine_detection: detect
answering_machine_detection_config:
total_analysis_time_millis: 5000
after_greeting_silence_millis: 1000
between_words_silence_millis: 1000
greeting_duration_millis: 1000
initial_silence_millis: 1000
maximum_number_of_words: 1000
maximum_word_length_millis: 2000
silence_threshold: 512
greeting_total_analysis_time_millis: 50000
greeting_silence_duration_millis: 2000
deepfake_detection:
enabled: true
timeout: 15
rtp_timeout: 30
custom_headers:
- name: head_1
value: val_1
- name: head_2
value: val_2
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
link_to: ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==
bridge_intent: true
bridge_on_answer: true
media_encryption: SRTP
sip_auth_username: username
sip_auth_password: password
sip_headers:
- name: User-to-User
value: '12345'
sip_transport_protocol: TLS
stream_url: wss://www.example.com/websocket
stream_track: both_tracks
send_silence_when_idle: true
enable_dialogflow: false
dialogflow_config:
analyze_sentiment: false
partial_automated_agent_reply: false
conversation_relay_config:
url: wss://example.com/conversation-relay
dtmf_detection: true
greeting: Hi! Ask me anything!
voice: Telnyx.KokoroTTS.af
tts_provider: telnyx
language: en-US
interruptible: speech
interruptible_greeting: dtmf
custom_parameters:
customer_id: '12345'
properties:
assistant:
$ref: '#/components/schemas/CallAssistantRequest'
conversation_relay_config:
$ref: '#/components/schemas/ConversationRelayEmbeddedConfig'
to:
description: The DID or SIP URI to dial out to. Multiple DID or SIP URIs can be provided using an array of strings.
For SIP URI destinations, append `;secure=true` or `;secure=srtp` to enable SRTP media encryption for that endpoint,
or `;secure=dtls` to enable DTLS media encryption for that endpoint. If `media_encryption` is set to `SRTP` or
`DTLS`, it takes precedence over any per-endpoint `secure` URI parameter. For a single string destination, you
may append a comma followed by DTMF digits (e.g. `+18004247767,200`) to play those digits as DTMF once the called
party answers — equivalent to setting `send_digits_on_answer` separately. If both are present, the explicit `send_digits_on_answer`
parameter takes precedence. This shorthand is not supported when `to` is an array.
oneOf:
- type: string
example: +18005550100 or sip:username@sip.telnyx.com;secure=srtp
- type: array
items:
type: string
example:
- '+18005550100'
- sip:username@sip.telnyx.com;secure=srtp
from:
description: The `from` number to be used as the caller id presented to the destination (`to` number). The number
should be in +E164 format.
type: string
example: '+18005550101'
diversion:
description: The `to` number of an active inbound call, in +E164 format. Telnyx checks whether there is currently
an active inbound call where `to` matches this `diversion` value and `from` matches the `from` number supplied
for this request. If such a call exists, the `from` number is treated as verified (since it is already on an active
inbound call to you) and can be used as the caller id for this outbound call.
type: string
example: '+18005550101'
from_display_name:
description: The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to
the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers,
spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from`
field.
type: string
example: Company Name
privacy:
type: string
description: Indicates the privacy level to be used for the call. When set to `id`, caller ID information (name
and number) will be hidden from the called party. When set to `none` or omitted, caller ID will be shown normally.
enum:
- id
- none
example: id
connection_id:
type: string
description: The ID of the Call Control App (formerly ID of the connection) to be used when dialing the destination.
audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played back to the callee when the call is answered. The URL can point to either
a WAV or MP3 file. media_name and audio_url cannot be used together in one request.
send_digits_on_answer:
type: string
example: wwww200
description: 'DTMF digits to send automatically after the called party answers. Useful for reaching an extension
behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`,
`A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent.
May also be supplied inline by appending `,` to `to` (e.g. `to=+18004247767,200`); if both forms are present,
this explicit field takes precedence.'
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played back to the callee when the call is answered. The media_name
must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must
either be a WAV or MP3 file.
preferred_codecs:
type: string
description: The list of comma-separated codecs in a preferred order for the forked media to be received.
example: G722,PCMU,PCMA,G729,OPUS,VP8,H264
timeout_secs:
description: The number of seconds that Telnyx will wait for the call to be answered by the destination to which
it is being called. If the timeout is reached before an answer is received, the call will hangup and a `call.hangup`
webhook with a `hangup_cause` of `timeout` will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds.
default: 30
type: integer
example: 60
format: int32
retry_on_timeout:
description: Whether to keep trying the remaining routing paths (e.g. alternate providers/gateways) for the same
destination after `timeout_secs` is reached for the current attempt. When set to `false`, reaching `timeout_secs`
aborts the entire dial attempt and the `call.hangup` webhook reports a `hangup_cause` of `no_answer` instead of
`timeout`.
default: true
type: boolean
example: true
time_limit_secs:
description: Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call
will hangup and a `call.hangup` webhook with a `hangup_cause` of `time_limit` will be sent. For example, by setting
a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The
default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length.
default: 14400
type: integer
example: 600
format: int32
minimum: 30
maximum: 14400
answering_machine_detection:
description: 'Enables Answering Machine Detection. Telnyx offers Premium and Standard detections. With Premium detection,
when a call is answered, Telnyx runs real-time detection and sends a `call.machine.premium.detection.ended` webhook
with one of the following results: `human_residence`, `human_business`, `machine`, `silence` or `fax_detected`.
If we detect a beep, we also send a `call.machine.premium.greeting.ended` webhook with the result of `beep_detected`.
If we detect a beep before `call.machine.premium.detection.ended` we only send `call.machine.premium.greeting.ended`,
and if we detect a beep after `call.machine.premium.detection.ended`, we send both webhooks. With Standard detection,
when a call is answered, Telnyx runs real-time detection to determine if it was picked up by a human or a machine
and sends an `call.machine.detection.ended` webhook with the analysis result. If `greeting_end` or `detect_words`
is used and a `machine` is detected, you will receive another `call.machine.greeting.ended` webhook when the answering
machine greeting ends with a beep or silence. If `detect_beep` is used, you will only receive `call.machine.greeting.ended`
if a beep is detected. If `answering_machine_detection` is set to `premium_ios_call_screening_detection`, Premium
AMD runs with iOS Call Screening support: after an initial `machine` result, Telnyx listens for the iOS call-screening
prompt to end or for an Apple Call Screening tone, sends `call.machine.premium.greeting.ended` with `result=prompt_ended`
or `call.machine.premium.call_screening.detected` with `result=screening` respectively. When the Apple Call Screening
tone is detected, Premium AMD is restarted on the screened call and a `call.machine.premium.detection.ended` webhook
with the post-screening classification follows.'
default: disabled
type: string
enum:
- premium
- premium_ios_call_screening_detection
- detect
- detect_beep
- detect_words
- greeting_end
- disabled
answering_machine_detection_config:
description: Optional configuration parameters to modify 'answering_machine_detection' performance. Only `total_analysis_time_millis`
and `greeting_duration_millis` parameters are applicable when `premium` is selected as answering_machine_detection.
`prompt_end_timeout_millis` is additionally applicable when `premium_ios_call_screening_detection` is selected.
type: object
properties:
total_analysis_time_millis:
description: Maximum timeout threshold for overall detection.
default: 3500
type: integer
example: 5000
format: int32
beep_detection_profile:
description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors
to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default
profile.
default: both
type: string
example: freq_only
enum:
- both
- freq_only
beep_min_frequency_hz:
description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes
North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile
is in use. Only used when beep detection is active.
type: integer
example: 550
format: int32
minimum: 200
maximum: 4000
beep_max_frequency_hz:
description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when
beep detection is active.
type: integer
example: 2000
format: int32
minimum: 200
maximum: 4000
beep_min_tone_duration_millis:
description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such
as call-progress blips. Only used when beep detection is active.
type: integer
example: 300
format: int32
minimum: 50
maximum: 5000
beep_spectral_confirmation:
description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only
used when beep detection is active.
type: boolean
example: true
beep_spectral_window_millis:
description: Length of the spectral confirmation window, in milliseconds. Only used when beep detection is active.
type: integer
example: 100
format: int32
minimum: 20
maximum: 1000
beep_spectral_min_purity:
description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed
tones such as ringback, which combines two frequencies. Only used when beep detection is active.
type: number
example: 0.8
minimum: 0
maximum: 1
beep_spectral_reject_fax_cng:
description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when beep
detection is active.
type: boolean
example: true
after_greeting_silence_millis:
description: Silence duration threshold after a greeting message or voice for it be considered human.
default: 800
type: integer
example: 1000
format: int32
between_words_silence_millis:
description: Maximum threshold for silence between words.
default: 50
type: integer
example: 100
format: int32
greeting_duration_millis:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine.
default: 3500
type: integer
example: 1500
format: int32
initial_silence_millis:
description: If initial silence duration is greater than this value, consider it a machine.
default: 3500
type: integer
example: 1800
format: int32
maximum_number_of_words:
description: If number of detected words is greater than this value, consder it a machine.
default: 5
type: integer
example: 3
format: int32
maximum_word_length_millis:
description: If a single word lasts longer than this threshold, consider it a machine.
default: 3500
type: integer
example: 2000
format: int32
silence_threshold:
description: Minimum noise threshold for any analysis.
default: 256
type: integer
example: 512
format: int32
greeting_total_analysis_time_millis:
description: If machine already detected, maximum timeout threshold to determine the end of the machine greeting.
default: 5000
type: integer
example: 7500
format: int32
greeting_silence_duration_millis:
description: If machine already detected, maximum threshold for silence between words. If exceeded, the greeting
is considered ended.
default: 1500
type: integer
example: 2000
format: int32
prompt_end_timeout_millis:
description: Maximum time Telnyx waits, in milliseconds, for the iOS call-screening prompt to end after Premium
AMD initially detects a `machine`. Used when `answering_machine_detection` is `premium_ios_call_screening_detection`.
Defaults to 5000 milliseconds.
default: 5000
type: integer
example: 5000
format: int32
minimum: 1000
maximum: 120000
deepfake_detection:
description: Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a
detection service that analyzes whether the voice is AI-generated. Results are delivered via the `call.deepfake_detection.result`
webhook.
type: object
required:
- enabled
properties:
enabled:
type: boolean
default: false
description: Whether deepfake detection is enabled.
timeout:
type: integer
format: int32
default: 15
minimum: 5
maximum: 60
description: Maximum time in seconds to wait for a detection result before timing out.
rtp_timeout:
type: integer
format: int32
default: 30
minimum: 5
maximum: 120
description: Maximum time in seconds to wait for RTP audio before timing out. If no audio is received within
this window, detection stops with an error.
conference_config:
description: Optional configuration parameters to dial new participant into a conference.
type: object
properties:
id:
description: Conference ID to be joined
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
format: uuid
conference_name:
description: Conference name to be joined
type: string
example: telnyx-conference
early_media:
description: Controls the moment when dialled call is joined into conference. If set to `true` user will be
joined as soon as media is available (ringback). If `false` user will be joined when call is answered. Defaults
to `true`
type: boolean
example: false
default: true
end_conference_on_exit:
description: Whether the conference should end and all remaining participants be hung up after the participant
leaves the conference. Defaults to "false".
example: true
type: boolean
soft_end_conference_on_exit:
description: Whether the conference should end after the participant leaves the conference. NOTE this doesn't
hang up the other participants. Defaults to "false".
example: true
type: boolean
hold:
description: Whether the participant should be put on hold immediately after joining the conference. Defaults
to "false".
example: true
type: boolean
hold_audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played to the participant when they are put on hold after joining the conference.
hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when "start_conference_on_create"
is set to "false". This property takes effect only if "hold" is set to "true".
hold_media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played to the participant when they are put on hold after joining
the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the
same user/organization. The file must either be a WAV or MP3 file. Takes effect only when "start_conference_on_create"
is set to "false". This property takes effect only if "hold" is set to "true".
mute:
description: Whether the participant should be muted immediately after joining the conference. Defaults to "false".
example: true
type: boolean
start_conference_on_enter:
description: Whether the conference should be started after the participant joins the conference. Defaults to
"false".
example: true
type: boolean
start_conference_on_create:
description: Whether the conference should be started on creation. If the conference isn't started all participants
that join are automatically put on hold. Defaults to "true".
example: false
type: boolean
supervisor_role:
description: Sets the joining participant as a supervisor for the conference. A conference can have multiple
supervisors. "barge" means the supervisor enters the conference as a normal participant. This is the same
as "none". "monitor" means the supervisor is muted but can hear all participants. "whisper" means that only
the specified "whisper_call_control_ids" can hear the supervisor. Defaults to "none".
example: whisper
type: string
enum:
- barge
- monitor
- none
- whisper
whisper_call_control_ids:
description: Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor
will join the conference as a monitoring participant only.
example:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
type: array
items:
type: string
beep_enabled:
description: Whether a beep sound should be played when the participant joins and/or leaves the conference.
Can be used to override the conference-level setting.
enum:
- always
- never
- on_enter
- on_exit
example: on_exit
type: string
custom_headers:
description: Custom headers to be added to the SIP INVITE.
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
billing_group_id:
description: Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group
ID.
type: string
format: uuid
example: f5586561-8ff0-4291-a0ac-84fe544797bd
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore others Dial commands with the same `command_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
link_to:
description: Use another call's control id for sharing the same call session id
type: string
example: ilditnZK_eVysupV21KzmzN_sM29ygfauQojpm4BgFtfX5hXAcjotg==
bridge_intent:
description: Indicates the intent to bridge this call with the call specified in link_to. When bridge_intent is
true, link_to becomes required and the from number will be overwritten by the from number from the linked call.
type: boolean
default: false
example: true
bridge_on_answer:
description: Whether to automatically bridge answered call to the call specified in link_to. When bridge_on_answer
is true, link_to becomes required.
type: boolean
default: false
example: true
prevent_double_bridge:
description: Prevents bridging and hangs up the call if the target is already bridged. Disabled by default.
type: boolean
default: false
example: true
park_after_unbridge:
description: If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default
behavior is to hang up the leg. When park_after_unbridge is set, link_to becomes required.
type: string
example: self
media_encryption:
description: 'Defines whether media should be encrypted on the call. For SIP URI destinations, media encryption
can also be requested per endpoint with the `secure` URI parameter: `;secure=true` or `;secure=srtp` enables SRTP,
and `;secure=dtls` enables DTLS. This parameter, when set to `SRTP` or `DTLS`, takes precedence over the per-endpoint
`secure` value.'
default: disabled
type: string
enum:
- disabled
- SRTP
- DTLS
sip_auth_username:
description: SIP Authentication username used for SIP challenges.
type: string
sip_auth_password:
description: SIP Authentication password used for SIP challenges.
type: string
sip_headers:
description: SIP headers to be added to the SIP INVITE request. Currently only User-to-User header is supported.
type: array
example:
- name: User-to-User
value: value
items:
$ref: '#/components/schemas/SipHeader'
sip_transport_protocol:
description: Defines SIP transport protocol to be used on the call.
default: UDP
type: string
enum:
- UDP
- TCP
- TLS
sound_modifications:
$ref: '#/components/schemas/SoundModifications'
stream_url:
description: The destination WebSocket address where the stream is going to be delivered.
type: string
example: wss://www.example.com/websocket
stream_track:
description: Specifies which track should be streamed.
type: string
enum:
- inbound_track
- outbound_track
- both_tracks
default: inbound_track
example: both_tracks
stream_codec:
$ref: '#/components/schemas/StreamCodec'
stream_bidirectional_mode:
$ref: '#/components/schemas/StreamBidirectionalMode'
stream_bidirectional_codec:
$ref: '#/components/schemas/StreamBidirectionalCodec'
stream_bidirectional_target_legs:
$ref: '#/components/schemas/StreamBidirectionalTargetLegs'
stream_bidirectional_sampling_rate:
$ref: '#/components/schemas/StreamBidirectionalSamplingRate'
stream_establish_before_call_originate:
description: Establish websocket connection before dialing the destination. This is useful for cases where the websocket
connection takes a long time to establish.
type: boolean
default: false
example: true
send_silence_when_idle:
description: Generate silence RTP packets when no transmission available.
type: boolean
default: false
example: true
webhook_url:
description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.
type: string
example: https://www.example.com/server-b/
webhook_url_method:
description: HTTP request type used for `webhook_url`.
default: POST
type: string
enum:
- POST
- GET
example: GET
webhook_urls:
description: A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook
URLs associated with that event type will be called instead of the default webhook URL. Events not mapped here
will use the default webhook URL.
type: object
additionalProperties:
type: array
items:
type: string
format: uri
example:
call.hangup:
- https://www.example.com/webhooks/hangup
call.bridge:
- https://www.example.com/webhooks/bridge
webhook_urls_method:
description: HTTP request method to invoke `webhook_urls`.
type: string
enum:
- POST
- GET
default: POST
example: POST
webhook_retries_policies:
description: A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying
the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.
type: object
additionalProperties:
type: object
properties:
retries_ms:
type: array
items:
type: integer
maxItems: 5
description: Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms.
example:
call.hangup:
retries_ms:
- 1000
- 2000
- 5000
record:
description: Start recording automatically after an event. Disabled by default.
type: string
enum:
- record-from-answer
example: record-from-answer
record_channels:
description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified.
type: string
enum:
- single
- dual
default: dual
example: single
record_format:
description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified.
type: string
enum:
- wav
- mp3
default: mp3
example: wav
record_max_length:
description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value
is 0. The maximum value is 43200. The default value is 0 (infinite).
type: integer
format: int32
default: 0
example: 1000
record_timeout_secs:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected
when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription
is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is
0 (infinite).
type: integer
format: int32
default: 0
example: 100
record_track:
description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track
is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single
channel).
type: string
example: outbound
default: both
enum:
- both
- inbound
- outbound
record_trim:
description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
enum:
- trim-silence
type: string
example: trim-silence
record_custom_file_name:
description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add
a Unix timestamp suffix.
type: string
minLength: 1
maxLength: 40
example: my_recording_file_name
supervise_call_control_id:
description: The call leg which will be supervised by the new call.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
supervisor_role:
description: The role of the supervisor call. 'barge' means that supervisor call hears and is being heard by both
ends of the call (caller & callee). 'whisper' means that only supervised_call_control_id hears supervisor but
supervisor can hear everything. 'monitor' means that nobody can hear supervisor call, but supervisor can hear
everything on the call.
type: string
enum:
- barge
- whisper
- monitor
default: barge
enable_dialogflow:
description: Enables Dialogflow for the current call. The default value is false.
type: boolean
default: false
example: true
dialogflow_config:
$ref: '#/components/schemas/DialogflowConfig'
transcription:
description: Enable transcription upon call answer. The default value is false.
type: boolean
default: false
example: true
transcription_config:
$ref: '#/components/schemas/TranscriptionStartRequest'
sip_region:
description: Defines the SIP region to be used for the call.
type: string
default: US
enum:
- US
- Europe
- Canada
- Australia
- Middle East
example: Canada
stream_auth_token:
description: An authentication token to be sent as part of the WebSocket connection when using streaming. Maximum
length is 4000 characters.
type: string
maxLength: 4000
example: your-auth-token
route_to_mobile:
description: When set to true, routes the call directly to the mobile device associated with the destination Telnyx
Mobile number, bypassing Inbound Calls Interception configured in the Telnyx Portal under Mobile Numbers → select
the number → Voice → Call Interception. Use this when transferring an intercepted call to the mobile device to
prevent the call from being intercepted again. Defaults to false.
type: boolean
default: false
example: true
CallResource:
type: object
title: Call resource
example:
account_sid: 61bf923e-5e4d-4595-a110-56190ea18a1b
answered_by: human
caller_name: '+13122010094'
date_created: Thu, 15 Jun 2023 09:56:45 +0000
date_updated: Thu, 15 Jun 2023 09:56:56 +0000
direction: inbound
duration: '11'
end_time: Thu, 15 Jun 2023 09:56:56 +0000
from: '+13123456789'
from_formatted: (312) 345-6789
sid: v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA
start_time: Thu, 15 Jun 2023 09:56:45 +0000
status: completed
to: '+13987654321'
to_formatted: (398) 765-4321
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
answered_by:
type: string
description: The value of the answering machine detection result, if this feature was enabled for the call.
enum:
- human
- machine
- not_sure
example: human
caller_name:
type: string
description: Caller ID, if present.
example: CALLER
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
direction:
type: string
description: The direction of this call.
enum:
- inbound
- outbound
example: inbound
duration:
type: string
description: The duration of this call, given in seconds.
example: '12'
end_time:
type: string
description: The end time of this call.
example: Thu, 15 Jun 2023 09:56:45 +0000
from:
type: string
description: The phone number or SIP address that made this call.
example: '+13123456789'
from_formatted:
type: string
description: The from number formatted for display.
example: (312) 345-6789
price:
type: string
description: The price of this call, the currency is specified in the price_unit field. Only populated when the
call cost feature is enabled for the account.
example: '0.10'
price_unit:
type: string
description: The unit in which the price is given.
example: USD
sid:
type: string
description: The identifier of this call.
example: v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA
start_time:
type: string
description: The start time of this call.
example: Thu, 15 Jun 2023 09:56:45 +0000
status:
type: string
description: The status of this call.
enum:
- ringing
- in-progress
- canceled
- completed
- failed
- busy
- no-answer
example: completed
to:
type: string
description: The phone number or SIP address that received this call.
example: '+13987654321'
to_formatted:
type: string
description: The to number formatted for display.
example: (398) 765-4321
uri:
type: string
description: The relative URI for this call.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA.json
CallResourceIndex:
type: object
title: Multiple call resources
example:
calls: []
end: 0
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
page: 0
page_size: 1
start: 0
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
properties:
calls:
type: array
items:
$ref: '#/components/schemas/CallResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: 19
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
CallSiprecFailed:
type: object
title: Siprec Failed
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the resource.
event_type:
type: string
example: siprec.failed
enum:
- siprec.failed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 25dc3731-e51e-4927-a50d-a61cc25984b1
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2021-12-15T14:11:24.613295Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
failure_cause:
type: string
example: no_answer
description: Q850 reason why siprec session failed.
example:
record_type: event
event_type: siprec.failed
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
failure_cause: no_answer
CallSiprecFailedEvent:
type: object
title: Siprec Failed Event
properties:
data:
$ref: '#/components/schemas/CallSiprecFailed'
CallSiprecStarted:
type: object
title: Siprec Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: siprec.started
enum:
- siprec.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2021-12-15T14:06:32.059436Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
example:
record_type: event
event_type: siprec.started
id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031
occurred_at: '2021-12-15T14:06:32.059436Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
CallSiprecStartedEvent:
type: object
title: Siprec Started Event
properties:
data:
$ref: '#/components/schemas/CallSiprecStarted'
CallSiprecStopped:
type: object
title: Siprec Stopped
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: siprec.stopped
enum:
- siprec.stopped
description: The type of event being delivered.
id:
type: string
format: uuid
example: 25dc3731-e51e-4927-a50d-a61cc25984b1
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2021-12-15T14:11:24.613295Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
hangup_cause:
type: string
example: normal_clearing
description: Q850 reason why the SIPREC session was stopped.
example:
record_type: event
event_type: siprec.stopped
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
hangup_cause: normal_clearing
CallSiprecStoppedEvent:
type: object
title: Siprec Stopped Event
properties:
data:
$ref: '#/components/schemas/CallSiprecStopped'
CallSpeakEnded:
type: object
title: Call Speak Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.speak.ended
enum:
- call.speak.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
status:
type: string
example: completed
enum:
- completed
- call_hangup
- cancelled_amd
description: Reflects how the command ended.
example:
record_type: event
event_type: call.speak.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
status: completed
CallSpeakEndedEvent:
type: object
title: Call Speak Ended Event
properties:
data:
$ref: '#/components/schemas/CallSpeakEnded'
CallSpeakStarted:
type: object
title: Call Speak Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.speak.started
enum:
- call.speak.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
example:
record_type: event
event_type: call.speak.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
CallSpeakStartedEvent:
type: object
title: Call Speak Started Event
properties:
data:
$ref: '#/components/schemas/CallSpeakStarted'
CallStreamingFailed:
type: object
title: Streaming Failed
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the resource.
event_type:
type: string
example: streaming.failed
enum:
- streaming.failed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 25dc3731-e51e-4927-a50d-a61cc25984b1
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2021-12-15T14:11:24.613295Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
failure_reason:
type: string
example: connection_failed
description: A short description explaning why the media streaming failed.
stream_id:
type: string
format: uuid
example: 1edb94f9-7ef0-4150-b502-e0ebadfd9491
description: Identifies the streaming.
stream_params:
type: object
description: Streaming parameters as they were originally given to the Call Control API.
properties:
stream_url:
type: string
example: wss://www.example.com/websocket
description: The destination WebSocket address where the stream is going to be delivered.
track:
description: Specifies which track should be streamed.
type: string
enum:
- inbound_track
- outbound_track
- both_tracks
default: inbound_track
example: inbound_track
stream_type:
type: string
example: websocket
enum:
- websocket
- dialogflow
description: The type of stream connection the stream is performing.
example:
record_type: event
event_type: streaming.failed
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
failure_reason: connection_failed
stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491
stream_params:
stream_url: wss://www.example.com/websocket
track: inbound_track
stream_type: websocket
CallStreamingFailedEvent:
type: object
title: Streaming Failed Event
properties:
data:
$ref: '#/components/schemas/CallStreamingFailed'
CallStreamingStarted:
type: object
title: Streaming Started
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: streaming.started
enum:
- streaming.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2021-12-15T14:06:32.059436Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
stream_url:
type: string
example: wss://www.example.com/websocket
description: Destination WebSocket address where the stream is going to be delivered.
example:
record_type: event
event_type: streaming.started
id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031
occurred_at: '2021-12-15T14:06:32.059436Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_url: wss://www.example.com/websocket
CallStreamingStartedEvent:
type: object
title: Streaming Started Event
properties:
data:
$ref: '#/components/schemas/CallStreamingStarted'
CallStreamingStopped:
type: object
title: Streaming Stopped
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: streaming.stopped
enum:
- streaming.stopped
description: The type of event being delivered.
id:
type: string
format: uuid
example: 25dc3731-e51e-4927-a50d-a61cc25984b1
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2021-12-15T14:11:24.613295Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 31f19208-5db0-11ec-9ea7-02420a0d3a69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
stream_url:
type: string
example: wss://www.example.com/websocket
description: Destination WebSocket address where the stream is going to be delivered.
example:
record_type: event
event_type: streaming.stopped
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_url: wss://www.example.com/websocket
CallStreamingStoppedEvent:
type: object
title: Streaming Stopped Event
properties:
data:
$ref: '#/components/schemas/CallStreamingStopped'
CallUnhold:
type: object
title: Call Unhold
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.unhold
enum:
- call.unhold
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
example:
record_type: event
event_type: call.unhold
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
CallUnholdEvent:
type: object
title: Call Unhold Event
properties:
data:
$ref: '#/components/schemas/CallUnhold'
CallWithRecordingId:
type: object
title: Call With Recording ID
required:
- call_control_id
- call_leg_id
- call_session_id
- is_alive
- record_type
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768
call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
is_alive: false
call_duration: 50
record_type: call
recording_id: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
start_time: '2019-01-23T18:10:02.574Z'
end_time: '2019-01-23T18:11:52.574Z'
properties:
record_type:
type: string
enum:
- call
example: call
call_session_id:
description: ID that is unique to the call session and can be used to correlate webhook events. Call session is
a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of
a transferred call
type: string
example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1
call_leg_id:
description: ID that is unique to the call and can be used to correlate webhook events
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_control_id:
description: Unique identifier and token for controlling the call.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
is_alive:
description: Indicates whether the call is alive or not. For Dial command it will always be `false` (dialing is
asynchronous).
type: boolean
example: true
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
call_duration:
description: Indicates the duration of the call in seconds
type: integer
example: 50
recording_id:
type: string
format: uuid
example: d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a
description: The ID of the recording. Only present when the record parameter is set to record-from-answer.
start_time:
description: ISO 8601 formatted date indicating when the call started
type: string
example: '2019-01-23T18:10:02.574Z'
end_time:
description: ISO 8601 formatted date indicating when the call ended. Only present when the call is not alive
type: string
example: '2019-01-23T18:11:52.574Z'
CallerIdentity:
type: object
description: Identity information for the phone number's owner, including name and postal address. Populated when `type=caller-identity`
is requested.
properties:
name:
type:
- string
- 'null'
description: The name associated with the phone number.
example: Jane Doe
address:
$ref: '#/components/schemas/number-lookup_Address'
confidence_score:
type:
- number
- 'null'
description: 'How strongly the phone number is linked to the returned name, on a scale of 50 to 90 (higher means
more supporting signals). Reflects signal strength, not probability: 70 indicates stronger, more consistent evidence
than 60, not a 70% chance of being correct. As a guide, 70+ is high confidence, 60 moderate, and 50 limited. Below
50 no name is returned, so scores under 50 are never present.'
example: 80.0
error_code:
type:
- string
- 'null'
description: A lookup-specific error code if the identity could not be resolved; otherwise null.
example: null
CallerName:
type: object
properties:
caller_name:
type: string
description: The name of the requested phone number's owner as per the CNAM database
example: TELNYX LLC
error_code:
type: string
description: A caller-name lookup specific error code, expressed as a stringified 5-digit integer
example: '10001'
CampaignCost:
title: CampaignCost
required:
- campaignUsecase
- monthlyCost
- upFrontCost
- description
type: object
properties:
campaignUsecase:
title: Campaignusecase
type: string
monthlyCost:
title: Monthlycost
type: string
upFrontCost:
title: Upfrontcost
type: string
description:
title: Description
type: string
CampaignDeletionResponse:
title: CampaignDeletionResponse
required:
- time
type: object
properties:
time:
title: Time
type: number
record_type:
title: Record Type
type: string
message:
title: Message
type: string
CampaignRecordSet_CSP:
title: CampaignRecordSet_CSP
type: object
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/TelnyxCampaignWithAssignedCount_CSP'
page:
title: Page
type: integer
totalRecords:
title: Totalrecords
type: integer
CampaignRequest:
title: CampaignRequest
required:
- brandId
- description
- usecase
type: object
properties:
ageGated:
title: Agegated
type: boolean
description: Age gated message content in campaign.
autoRenewal:
title: Autorenewal
type: boolean
description: Campaign subscription auto-renewal option. If set to true, then campaign will automatically renewal
at end of billing cycle.
brandId:
title: Brandid
type: string
description: Alphanumeric identifier of the brand associated with this campaign.
description:
title: Description
type: string
description: Summary description of this campaign.
directLending:
title: Directlending
type: boolean
description: Direct lending or loan arrangement
embeddedLink:
title: Embeddedlink
type: boolean
description: Does message generated by the campaign include URL link in SMS?
embeddedPhone:
title: Embeddedphone
type: boolean
description: Does message generated by the campaign include phone number in SMS?
helpKeywords:
title: Helpkeywords
type: string
description: Subscriber help keywords. Multiple keywords are comma separated without space.
helpMessage:
title: Helpmessage
type: string
description: Help message of the campaign.
messageFlow:
title: Messageflow
type: string
description: Message flow description.
mnoIds:
title: Mnoids
uniqueItems: true
type: array
items:
type: integer
description: Submit campaign to given list of MNOs by MNO's network ID. Default is all MNOs if no value provided.
numberPool:
title: Numberpool
type: boolean
description: Does campaign utilize pool of phone numbers?
optinKeywords:
title: Optinkeywords
type: string
description: Subscriber opt-in keywords. Multiple keywords are comma separated without space.
optinMessage:
title: Optinmessage
type: string
description: Subscriber opt-in message.
optoutKeywords:
title: Optoutkeywords
type: string
description: Subscriber opt-out keywords. Multiple keywords are comma separated without space.
optoutMessage:
title: Optoutmessage
type: string
description: Subscriber opt-out message.
referenceId:
title: Referenceid
type: string
description: Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns.
Can be used to prevent duplicate campaign registrations.
resellerId:
title: Resellerid
type: string
description: Alphanumeric identifier of the reseller that you want to associate with this campaign.
sample1:
title: Sample1
type: string
description: Message sample. Some campaign tiers require 1 or more message samples.
sample2:
title: Sample2
type: string
description: Message sample. Some campaign tiers require 2 or more message samples.
sample3:
title: Sample3
type: string
description: Message sample. Some campaign tiers require 3 or more message samples.
sample4:
title: Sample4
type: string
description: Message sample. Some campaign tiers require 4 or more message samples.
sample5:
title: Sample5
type: string
description: Message sample. Some campaign tiers require 5 or more message samples.
subUsecases:
title: Subusecases
uniqueItems: true
type: array
items:
type: string
description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation
to retrieve list of valid sub-usecases
subscriberHelp:
title: Subscriberhelp
type: boolean
description: Does campaign responds to help keyword(s)?
subscriberOptin:
title: Subscriberoptin
type: boolean
description: Does campaign require subscriber to opt-in before SMS is sent to subscriber?
subscriberOptout:
title: Subscriberoptout
type: boolean
description: Does campaign support subscriber opt-out keyword(s)?
tag:
title: Tag
uniqueItems: true
type: array
items:
type: string
description: Tags to be set on the Campaign.
termsAndConditions:
title: Termsandconditions
type: boolean
description: Is terms and conditions accepted?
privacyPolicyLink:
title: PrivacyPolicyLink
type: string
description: Link to the campaign's privacy policy.
termsAndConditionsLink:
title: TermsAndConditionsLink
type: string
description: Link to the campaign's terms and conditions.
embeddedLinkSample:
title: EmbeddedLinkSample
type: string
description: Sample of an embedded link that will be sent to subscribers.
usecase:
title: Usecase
type: string
description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases
available for given brand.
webhookURL:
title: WebhookURL
type: string
description: Webhook to which campaign status updates are sent.
example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Failover webhook to which campaign status updates are sent.
example: https://webhook.com/93711262-23e5-4048-a966-c0b2a16d5963
description: CampaignRequest object describes the campaign to be submitted via '/campaignBuilder/brand/{brandId}/usecase/{usecase}'
operation. It is also used in operations for retrieving status of campaign request and for updating a pending request.
CampaignSharingChain:
title: CampaignSharingChain
type: object
properties:
sharedByMe:
$ref: '#/components/schemas/CampaignSharingStatus'
sharedWithMe:
$ref: '#/components/schemas/CampaignSharingStatus'
CampaignSharingStatus:
title: CampaignSharingStatus
type: object
properties:
downstreamCnpId:
title: Downstreamcnpid
type: string
sharedDate:
title: Shareddate
type: string
sharingStatus:
title: Sharingstatus
type: string
statusDate:
title: Statusdate
type: string
upstreamCnpId:
title: Upstreamcnpid
type: string
CampaignStatusUpdateEvent:
title: Campaign Status Update Event
type: object
properties:
brandId:
title: Brandid
type: string
description: Brand ID associated with the campaign.
example: d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5
campaignId:
title: Campaignid
type: string
description: The ID of the campaign.
example: 4b300178-131c-d902-d54e-72d90ba1620j
createDate:
title: CreateDate
type: string
description: Unix timestamp when campaign was created.
cspId:
title: Cspid
type: string
description: Alphanumeric identifier of the CSP associated with this campaign.
isTMobileRegistered:
title: IsTMobileRegistered
type: boolean
description: Indicates whether the campaign is registered with T-Mobile.
type:
title: Type
type: string
enum:
- TELNYX_EVENT
- REGISTRATION
- MNO_REVIEW
- TELNYX_REVIEW
- NUMBER_POOL_PROVISIONED
- NUMBER_POOL_DEPROVISIONED
- TCR_EVENT
- VERIFIED
example: TELNYX_EVENT
description:
title: Description
type: string
description: Description of the event.
example: Campaign has been marked as dormant
status:
title: Status
type: string
enum:
- ACCEPTED
- REJECTED
- DORMANT
- success
- failed
description: The status of the campaign.
example: DORMANT
CanaryDeployRequest:
properties:
rules:
title: Rules
items:
$ref: '#/components/schemas/Rule-Input'
type: array
type: object
title: CanaryDeployRequest
description: 'Create/update request body. Accepts:
- ``rules`` — canonical ordered list of routing rules'
CanaryDeployResponse:
properties:
assistant_id:
type: string
title: Assistant Id
rules:
items:
$ref: '#/components/schemas/Rule-Output'
type: array
title: Rules
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- assistant_id
- rules
- created_at
- updated_at
title: CanaryDeployResponse
description: 'Response shape.
Always carries ``rules`` (canonical).'
CancelPendingVersionResponse:
type: object
properties:
data:
type: object
properties:
cancelled:
$ref: '#/components/schemas/DocReqsRequirement'
restored:
$ref: '#/components/schemas/DocReqsRequirement'
CapabilitiesResponse:
type: object
additionalProperties: false
properties:
brand_entity:
type: boolean
brand_verification:
type: boolean
submission_sections:
type: boolean
distinct_launch_phase:
type: boolean
per_carrier_approval:
type: boolean
templates:
type: boolean
campaigns:
type: boolean
vendor_webhooks:
type: boolean
invite_test_devices:
type: boolean
required:
- brand_entity
- brand_verification
- submission_sections
- distinct_launch_phase
- per_carrier_approval
- templates
- campaigns
- vendor_webhooks
- invite_test_devices
Carrier:
type: object
properties:
mobile_country_code:
type: string
description: Region code that matches the specific country calling code if the requested phone number type is mobile
example: US
mobile_network_code:
type: string
description: National destination code (NDC), with a 0 prefix, if an NDC is found and the requested phone number
type is mobile
example: 0866
name:
type: string
description: SPID (Service Provider ID) name, if the requested phone number has been ported; otherwise, the name
of carrier who owns the phone number block
example: Telnyx/4
type:
type: string
description: A phone number type that identifies the type of service associated with the requested phone number
enum:
- fixed line
- mobile
- voip
- fixed line or mobile
- toll free
- premium rate
- shared cost
- personal number
- pager
- uan
- voicemail
- unknown
example: voip
error_code:
type:
- string
- 'null'
description: Unused
example: null
normalized_carrier:
type: string
description: If known to Telnyx and applicable, the primary network carrier.
example: AT&T
CarrierApprovalResponse:
type: object
additionalProperties: false
properties:
approval_id:
type: string
format: uuid
scope_type:
$ref: '#/components/schemas/CarrierApprovalScope'
status:
$ref: '#/components/schemas/CarrierApprovalStatus'
carrier:
type:
- string
- 'null'
submitted_at:
type:
- string
- 'null'
format: date-time
approved_at:
type:
- string
- 'null'
format: date-time
rejected_reason:
type:
- string
- 'null'
required:
- approval_id
- scope_type
- status
- carrier
- submitted_at
- approved_at
- rejected_reason
example:
approval_id: 33333333-3333-4333-8333-333333333333
scope_type: hub
status: SUBMITTED
carrier: null
submitted_at: '2026-08-10T12:00:00Z'
approved_at: null
rejected_reason: null
CarrierApprovalScope:
type: string
enum:
- carrier
- hub
- bot
CarrierApprovalStatus:
type: string
enum:
- PENDING
- SUBMITTED
- APPROVED
- REJECTED
CdrAvailableFieldsResponse:
type: object
properties:
Interaction Data:
type: array
description: Fields related to call interaction and basic call information
items:
type: string
example:
- origination_number
- terminating_number
- start_timestamp_utc
- start_timestamp
- answer_timestamp
- end_timestamp
- direction
Number Information:
type: array
description: Geographic and routing information for phone numbers
items:
type: string
example:
- origination_city
- origination_state
- origination_lata
- origination_country
- terminating_city
- terminating_state
Telephony Data:
type: array
description: Technical telephony and call control information
items:
type: string
example:
- route
- connection_id
- hangup_code
- pdd
- tags
- sip_call_id
- mos
Billing:
type: array
description: Cost and billing related information
items:
type: string
example:
- billable_time
- cost
- rate
- billing_group_id
description: Available CDR report fields grouped by category
CdrDeleteDetailReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrDetailedReqResponse'
CdrDeleteUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrUsageReportResponseLegacy'
CdrDetailedReqResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the report
example: 123e4567-e89b-12d3-a456-426614174000
start_time:
type: string
description: Start time in ISO format
example: '2024-02-01T00:00:00Z'
end_time:
type: string
description: End time in ISO format
example: '2024-02-12T23:59:59Z'
call_types:
type: array
description: List of call types (Inbound = 1, Outbound = 2)
items:
type: integer
description: Call type value
format: int32
record_types:
type: array
description: List of record types (Complete = 1, Incomplete = 2, Errors = 3)
example:
- 1
- 2
items:
type: integer
description: Record type value
format: int32
connections:
type: array
description: List of connections
example:
- 123
- 456
items:
type: integer
description: List of connections
format: int64
report_name:
type: string
description: Name of the report
example: My Report
status:
type: integer
description: Status of the report (Pending = 1, Complete = 2, Failed = 3, Expired = 4)
format: int32
example: 1
report_url:
type: string
description: URL to download the report
filters:
type: array
description: List of filters
items:
$ref: '#/components/schemas/Filter'
created_at:
type: string
description: Creation date of the report
example: '2024-02-12T14:00:00Z'
updated_at:
type: string
description: Last update date of the report
example: '2024-02-12T14:05:00Z'
timezone:
type: string
description: Timezone for the report
source:
type: string
description: 'Source of the report. Valid values: calls (default), call-control, fax-api, webrtc'
retry:
type: integer
description: Number of retries
format: int32
managed_accounts:
type: array
description: List of managed accounts
items:
type: string
format: uuid
example:
- f47ac10b-58cc-4372-a567-0e02b2c3d479
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
record_type:
type: string
example: cdr_detailed_report
description: Response object for CDR detailed report
CdrDetailedRequest:
required:
- start_time
- end_time
type: object
properties:
start_time:
type: string
description: Start time in ISO format
format: date-time
example: '2024-02-01T00:00:00Z'
end_time:
type: string
description: End time in ISO format
format: date-time
example: '2024-02-12T23:59:59Z'
timezone:
type: string
description: Timezone for the report
example: UTC
call_types:
type: array
description: List of call types to filter by (Inbound = 1, Outbound = 2)
items:
type: integer
format: int32
example:
- 1
- 2
record_types:
type: array
description: List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3)
items:
type: integer
format: int32
example:
- 1
- 2
connections:
type: array
description: List of connections to filter by
items:
type: integer
format: int64
example:
- 123
- 456
report_name:
type: string
description: Name of the report
example: My CDR Report
source:
type: string
description: 'Source of the report. Valid values: calls (default), call-control, fax-api, webrtc'
example: calls
include_all_metadata:
type: boolean
description: Whether to include all metadata
example: true
filters:
type: array
description: List of filters to apply
items:
$ref: '#/components/schemas/Filter'
fields:
type: array
description: Set of fields to include in the report
items:
type: string
example:
- call_leg_id
- start_time
- end_time
managed_accounts:
type: array
description: List of managed accounts to include
items:
type: string
format: uuid
example:
- f47ac10b-58cc-4372-a567-0e02b2c3d479
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
select_all_managed_accounts:
type: boolean
description: Whether to select all managed accounts
example: false
description: Request object for CDR detailed report
CdrGetDetailReportByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrDetailedReqResponse'
CdrGetDetailReportResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CdrDetailedReqResponse'
meta:
$ref: '#/components/schemas/batch-csv_PaginationMeta_705dfa7312'
CdrGetSyncUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrUsageReportResponse'
CdrGetUsageReportByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrUsageReportResponseLegacy'
CdrGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CdrUsageReportResponseLegacy'
meta:
$ref: '#/components/schemas/standard_PaginationMeta'
CdrPostDetailReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrDetailedReqResponse'
CdrPostUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/CdrUsageReportResponseLegacy'
CdrUsageReportResponse:
type: object
properties:
id:
type: string
description: Identifies the resource
format: uuid
start_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
end_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
connections:
type: array
example:
- 1234567890
- 9876543210
items:
type: integer
format: int64
aggregation_type:
type: string
enum:
- NO_AGGREGATION
- CONNECTION
- TAG
- BILLING_GROUP
status:
type: string
enum:
- PENDING
- COMPLETE
- FAILED
- EXPIRED
report_url:
type: string
example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv
result:
type: object
additionalProperties: true
created_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
record_type:
type: string
example: cdr_usage_report
product_breakdown:
type: string
enum:
- NO_BREAKDOWN
- DID_VS_TOLL_FREE
- COUNTRY
- DID_VS_TOLL_FREE_PER_COUNTRY
CdrUsageReportResponseLegacy:
type: object
properties:
id:
type: string
description: Identifies the resource
format: uuid
start_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
end_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
connections:
uniqueItems: true
type: array
example:
- '1234567890'
- '9876543210'
items:
type: string
aggregation_type:
type: integer
description: 'Aggregation type: All = 0, By Connections = 1, By Tags = 2, By Billing Group = 3'
format: int32
status:
type: integer
description: 'Status of the report: Pending = 1, Complete = 2, Failed = 3, Expired = 4'
format: int32
report_url:
type: string
example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv
result:
type: object
created_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
record_type:
type: string
example: cdr_usage_report
product_breakdown:
type: integer
description: 'Product breakdown type: No breakdown = 0, DID vs Toll-free = 1, Country = 2, DID vs Toll-free per
Country = 3'
format: int32
description: Legacy V2 CDR usage report response
ChatCompletionRequest:
properties:
messages:
items:
$ref: '#/components/schemas/ChatCompletionSystemMessageParam'
type: array
example:
- role: system
content: You are a friendly chatbot.
- role: user
content: Hello, world!
description: A list of the previous chat messages for context.
model:
type: string
default: meta-llama/Meta-Llama-3.1-8B-Instruct
description: The language model to chat with.
service_tier:
type: string
description: The service tier to use for this request. Supported values vary by model; use `GET /v2/ai/openai/models`
and inspect the model's `service_tiers` field. If omitted, Telnyx-hosted models use `default`.
region:
type: string
enum:
- USA
- EU
- AUS
- UAE
description: 'Optional data-residency region the request should be served from, using the same vocabulary as your
account''s Data Locality setting. Behavior depends on `mode`. Supported for Telnyx-hosted models only: a request
routed to an external provider never passes through Telnyx model routing, so a region cannot be enforced for it.
Omit for today''s latency-based routing.'
mode:
type: string
enum:
- preferred
- strict
default: preferred
description: 'How strictly `region` is applied. `preferred` (the default when `region` is set) tries that region
first and falls back to another when the model cannot be served there, so a request that would have succeeded
still succeeds. `strict` pins the request: it is served from that region or it fails with a 422, never redirected
to another region. Requires `region`.'
api_key_ref:
type: string
description: If you are using an external inference provider like xAI or OpenAI, this field allows you to pass along
a reference to your API key. After creating an [integration secret](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
for you API key, pass the secret's `identifier` in this field.
stream:
type: boolean
default: false
description: Whether or not to stream data-only server-sent events as they become available.
temperature:
type: number
default: 0.1
description: Adjusts the "creativity" of the model. Lower values make the model more deterministic and repetitive,
while higher values make the model more random and creative.
max_tokens:
type:
- integer
- 'null'
description: Maximum number of completion (output) tokens, including reasoning and answer tokens combined. An omitted
or null limit defaults to 8192 unless the model is excluded from that default; excluded models leave the limit
to the serving engine. Explicit values and applied defaults are clamped to the model's max_completion_tokens metadata
when that ceiling is set (see GET /v2/ai/openai/models). An omitted limit on an excluded model remains unset even
when metadata declares a ceiling. Input and output together must fit the model's context window. Set an explicit
limit when a bounded generation budget is required. For current Telnyx-hosted models, omitted or null limits default
to 8192 for `zai-org/GLM-5.3`, `zai-org/GLM-5.3-Flash` and `deepseek-ai/DeepSeek-V4.1-Flash`. The hosted exclusions
are `moonshotai/Kimi-K3`, `moonshotai/Kimi-K2.6`, `moonshotai/Kimi-K2.5`, `zai-org/GLM-5.2`, `zai-org/GLM-5.1-FP8`,
`MiniMaxAI/MiniMax-M3-MXFP8`, `MiniMaxAI/MiniMax-M2.7`, `Qwen/Qwen3.8-27B`, `Qwen/Qwen3-235B-A22B`, `deepseek-ai/DeepSeek-V4-Flash-0731`,
`meta-llama/Llama-3.3-70B-Instruct`, `meta-llama/Meta-Llama-3.1-70B-Instruct`, `meta-llama/Meta-Llama-3.1-8B-Instruct`
and `google/gemma-2b-it`. Legacy external and fine-tuned model IDs can also bypass the default; model discovery
reports completion ceilings, not whether this default applies. Set an explicit limit for predictable behavior
across models.
tools:
items:
oneOf:
- $ref: '#/components/schemas/ChatCompletionToolParam'
- $ref: '#/components/schemas/Retrieval'
type: array
description: The `function` tool type follows the same schema as the [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat).
The `retrieval` tool type is unique to Telnyx. You may pass a list of [embedded storage buckets](https://developers.telnyx.com/api-reference/embeddings/embed-documents)
for retrieval-augmented generation.
tool_choice:
type: string
enum:
- none
- auto
- required
response_format:
description: Controls the format of the model output. `json_object` guarantees valid JSON output without defining
a schema; `json_schema` constrains the output to the JSON schema you supply via the `json_schema` property and
is the supported way to get guaranteed structured output on Telnyx-hosted models.
$ref: '#/components/schemas/ChatCompletionResponseFormatParam'
min_p:
type: number
description: This is an alternative to `top_p` that [many prefer](https://github.com/huggingface/transformers/issues/27670).
Must be in [0, 1].
n:
type: number
description: This will return multiple choices for you instead of a single chat completion.
use_beam_search:
type: boolean
default: false
description: Setting this to `true` will allow the model to [explore more completion options](https://huggingface.co/blog/how-to-generate#beam-search).
This is not supported by OpenAI.
best_of:
type: integer
description: This is used with `use_beam_search` to determine how many candidate beams to explore.
length_penalty:
type: number
default: 1
description: This is used with `use_beam_search` to prefer shorter or longer completions.
early_stopping:
type: boolean
default: false
description: This is used with `use_beam_search`. If `true`, generation stops as soon as there are `best_of` complete
candidates; if `false`, a heuristic is applied and the generation stops when is it very unlikely to find better
candidates.
logprobs:
type: boolean
default: false
description: Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities
of each output token returned in the `content` of `message`.
top_logprobs:
type: integer
description: This is used with `logprobs`. An integer between 0 and 20 specifying the number of most likely tokens
to return at each token position, each with an associated log probability.
frequency_penalty:
type: number
default: 0
description: Higher values will penalize the model from repeating the same output tokens.
presence_penalty:
type: number
default: 0
description: Higher values will penalize the model from repeating the same output tokens.
top_p:
type: number
description: An alternative or complement to `temperature`. This adjusts how many of the top possibilities to consider.
stop:
description: Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain
the stop sequence.
oneOf:
- type: string
- type: array
items:
type: string
maxItems: 4
seed:
type: integer
description: If specified, the system will make a best effort to sample deterministically, such that repeated requests
with the same `seed` and parameters should return the same result.
enable_thinking:
type: boolean
default: true
description: Whether to enable the thinking/reasoning phase for models that support it (e.g., QwQ, Qwen3). When
set to false, the model will skip the internal reasoning step and respond directly, which can reduce latency.
Defaults to true.
reasoning_effort:
type: string
enum:
- none
- minimal
- low
- medium
- high
- xhigh
- max
description: 'Controls the reasoning effort for models that support it. When set, the model spends more or less
compute on internal reasoning before generating its response. Supported values: none, minimal, low, medium, high,
xhigh, max. Not all models support all values; unsupported values are rejected with a 400 error. When omitted,
reasoning models use their default effort level.'
type: object
required:
- messages
title: ChatCompletionRequest
ChatCompletionResponseFormatParam:
description: Output format for the model response. `text` returns plain text, `json_object` enables JSON mode (valid
JSON output without a schema), and `json_schema` constrains the output to a schema you supply. For guaranteed schema-conformant
structured output on Telnyx-hosted models, use `json_schema`.
oneOf:
- $ref: '#/components/schemas/ResponseFormatText'
- $ref: '#/components/schemas/ResponseFormatJsonObject'
- $ref: '#/components/schemas/ResponseFormatJsonSchemaParam'
title: ChatCompletionResponseFormatParam
ChatCompletionSystemMessageParam:
type: object
properties:
content:
oneOf:
- title: Content String
type: string
- title: Text and Image Array
type: array
items:
type: object
properties:
type:
type: string
enum:
- text
- image_url
text:
type: string
image_url:
type: string
required:
- type
additionalProperties: false
role:
type: string
enum:
- system
- user
- assistant
- tool
required:
- content
- role
title: ChatCompletionSystemMessageParam
ChatCompletionToolParam:
properties:
type:
type: string
enum:
- function
function:
$ref: '#/components/schemas/FunctionDefinition'
type: object
required:
- function
- type
title: Function
CheckAvailabilityTool:
properties:
type:
type: string
enum:
- check_availability
check_availability:
$ref: '#/components/schemas/CheckAvailabilityToolParams'
type: object
required:
- type
- check_availability
title: CheckAvailabilityTool
CheckAvailabilityToolParams:
properties:
event_type_id:
type: integer
description: Event Type ID for which slots are being fetched. [cal.com](https://cal.com/docs/api-reference/v2/slots/get-available-slots#parameter-event-type-id)
api_key_ref:
type: string
description: Reference to an integration secret that contains your Cal.com API key. You would pass the `identifier`
for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
that refers to your Cal.com API key.
example: my_calcom_api_key
type: object
required:
- event_type_id
- api_key_ref
title: CheckAvailabilityToolParams
ChildRelationshipInfo:
type: object
required:
- relationship_type
- via
- cost_rollup
- traversal_enabled
- description
- child_product
- child_event
- child_record_type
properties:
relationship_type:
type: string
via:
$ref: '#/components/schemas/MetadataFieldMapping'
cost_rollup:
type: boolean
traversal_enabled:
type: boolean
description:
type: string
child_product:
type: string
child_event:
type: string
child_record_type:
type: string
CivicAddress:
type: object
title: Civic Address
properties:
id:
$ref: '#/components/schemas/UUID'
record_type:
type: string
description: Identifies the type of the resource.
example: civic_address
city_or_town:
type: string
example: Chicago
city_or_town_alias:
type: string
company_name:
type: string
example: Telnyx
country:
type: string
example: US
country_or_district:
type: string
example: US
default_location_id:
type: string
format: uuid
description: Identifies what is the default location in the list of locations.
description:
type: string
example: Texas Office
house_number:
type: string
example: '600'
house_number_suffix:
type: string
postal_or_zip_code:
type: string
example: '78701'
state_or_province:
type: string
example: TX
street_name:
type: string
example: Congress
street_suffix:
type: string
example: St
locations:
type: array
items:
$ref: '#/components/schemas/Location'
example:
id: 07a4dc5d-9b3b-4ba2-88a4-6ba172316c65
record_type: civic_address
city_or_town: Austin
city_or_town_alias: ''
company_name: Telnyx
country: US
country_or_district: US
default_location_id: 18ded4bb-b694-44c1-a89b-a35b7acd4c9e
description: Austin Office
house_number: '600'
house_number_suffix: ''
locations:
- id: 18ded4bb-b694-44c1-a89b-a35b7acd4c9e
additional_info: ''
description: Austin Office
is_default: true
- id: d420a57f-c4ae-4697-87e1-fbefd9e86f72
additional_info: 14th Floor
description: ''
is_default: false
postal_or_zip_code: '78701'
state_or_province: TX
street_name: Congress Street
street_suffix: ''
Clause:
properties:
attribute:
type: string
title: Attribute
description: Attribute name from the routing context
operator:
$ref: '#/components/schemas/Operator'
description: Match operator
values:
items:
type: string
type: array
minItems: 1
title: Values
type: object
required:
- attribute
- operator
- values
title: Clause
description: 'A single attribute/operator/values check.
A clause matches when the routing context''s value for ``attribute``
satisfies ``operator`` against any of ``values``.'
ClickAction:
type: object
description: Click an element identified by observation_id + ref.
required:
- type
- observation_id
- ref
properties:
type:
const: click
observation_id:
type: string
minLength: 1
ref:
type: string
minLength: 1
wait:
type: string
enum:
- no_wait
- dom_stable
- url_change
default: dom_stable
timeout_ms:
type: integer
minimum: 100
maximum: 15000
default: 5000
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
ClientSideTool:
title: ClientSideTool
type: object
properties:
type:
type: string
enum:
- client_side_tool
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
client_side_tool:
$ref: '#/components/schemas/ClientSideToolParams'
required:
- type
- client_side_tool
ClientSideToolParams:
title: ClientSideToolParams
type: object
properties:
name:
type: string
description: The name of the tool.
description:
type: string
description: The description of the tool.
parameters:
description: The parameters the tool accepts, described as a JSON Schema object. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema)
for documentation about the format
type: object
properties:
properties:
description: The properties of the parameters.
type: object
additionalProperties: true
required:
description: The required properties of the parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
age:
description: The age of the customer.
type: integer
location:
description: The location of the customer.
type: string
required:
- age
- location
type: object
required:
- name
- description
- parameters
ClientStateUpdateRequest:
type: object
title: Update client state Request
required:
- client_state
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
ClientTextFrame:
type: object
description: Client-to-server frame containing text to synthesize.
required:
- text
properties:
text:
type: string
description: Text to convert to speech. Send `" "` (single space) as an initial handshake with optional `voice_settings`.
Subsequent messages contain the actual text to synthesize.
voice_settings:
type: object
description: 'Provider-specific voice settings sent with the initial handshake. Contents vary by provider — e.g.
`{"speed": 1.2}` for Minimax, `{"voice_speed": 1.5}` for Telnyx.'
additionalProperties: true
force:
type: boolean
description: When `true`, stops the current synthesis worker and starts a new one. Used to interrupt speech mid-stream
and begin synthesizing new text.
examples:
- text: ' '
voice_settings:
voice_speed: 1.2
- text: Hello, welcome to Telnyx text to speech.
- text: New text after interruption.
force: true
CloudflareSyncStatus:
title: CloudflareSyncStatus
enum:
- pending
- added
type: string
description: An enumeration.
CloudfsFilesystem:
type: object
description: A CloudFS filesystem, including its metadata credential. This shape is returned only by create and rotate-meta-token.
properties:
record_type:
type: string
example: cloudfs
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
example: agent-fs
status:
$ref: '#/components/schemas/CloudfsFilesystemStatus'
meta_url:
type: string
description: 'PostgreSQL connection URL for the filesystem''s metadata database. In create and rotate-meta-token
responses it embeds the metadata token as the password: `postgres://:@us-east-1.telnyxcloudfs.com:5432/?sslmode=require`
(the example below is shown without the credential; the actual response includes it). Pass it to `juicefs mount`:
the storage configuration is baked in at provisioning, so the metadata URL is all a client needs to mount the
filesystem.'
example: postgres://fs_0123456789abcdef@us-east-1.telnyxcloudfs.com:5432/fs_0123456789abcdef?sslmode=require
meta_token:
type: string
description: Metadata access token, in cleartext. Returned only by create and rotate-meta-token and not retrievable
afterwards — store it securely.
example: cloudfs_tok_0123456789abcdef0123456789abcdef
s3_endpoint:
type: string
description: URL of the Telnyx Cloud Storage endpoint backing this filesystem.
example: https://us-east-1.telnyxcloudstorage.com
s3_bucket:
type: string
description: Name of the bucket that stores this filesystem's data. Created during provisioning.
example: cloudfs-fs-0123456789abcdef
region:
type: string
example: us-east-1
created_at:
type: string
format: date-time
example: '2026-07-14T21:42:01Z'
updated_at:
type: string
format: date-time
example: '2026-07-14T21:42:01Z'
CloudfsFilesystemDetail:
type: object
description: A CloudFS filesystem as returned by get, update, and delete. `meta_url` omits the credential and there
is no `meta_token` field — the token is only returned by create and rotate-meta-token.
properties:
record_type:
type: string
example: cloudfs
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
example: agent-fs
status:
$ref: '#/components/schemas/CloudfsFilesystemStatus'
meta_url:
type: string
description: PostgreSQL connection URL for the filesystem's metadata database, without the credential. Combine it
with your stored metadata token, or issue a new token with rotate-meta-token.
example: postgres://fs_0123456789abcdef@us-east-1.telnyxcloudfs.com:5432/fs_0123456789abcdef?sslmode=require
s3_endpoint:
type: string
description: URL of the Telnyx Cloud Storage endpoint backing this filesystem.
example: https://us-east-1.telnyxcloudstorage.com
s3_bucket:
type: string
description: Name of the bucket that stores this filesystem's data. Created during provisioning.
example: cloudfs-fs-0123456789abcdef
region:
type: string
example: us-east-1
error:
type: string
description: Explanation of the most recent failed lifecycle action. Present only when the filesystem is in a `failed`
state.
example: failed to create storage bucket
created_at:
type: string
format: date-time
example: '2026-07-14T21:42:01Z'
updated_at:
type: string
format: date-time
example: '2026-07-14T21:42:01Z'
CloudfsFilesystemDetailResponseWrapper:
type: object
properties:
data:
$ref: '#/components/schemas/CloudfsFilesystemDetail'
CloudfsFilesystemListItem:
type: object
description: A CloudFS filesystem as returned in list results. Connection details (`meta_url`, `meta_token`) are omitted
— retrieve the filesystem by ID for its redacted `meta_url`.
properties:
record_type:
type: string
example: cloudfs
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
example: agent-fs
status:
$ref: '#/components/schemas/CloudfsFilesystemStatus'
s3_endpoint:
type: string
description: URL of the Telnyx Cloud Storage endpoint backing this filesystem.
example: https://us-east-1.telnyxcloudstorage.com
s3_bucket:
type: string
description: Name of the bucket that stores this filesystem's data. Created during provisioning.
example: cloudfs-fs-0123456789abcdef
region:
type: string
example: us-east-1
created_at:
type: string
format: date-time
example: '2026-07-14T21:42:01Z'
updated_at:
type: string
format: date-time
example: '2026-07-14T21:42:01Z'
CloudfsFilesystemListResponseWrapper:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CloudfsFilesystemListItem'
meta:
$ref: '#/components/schemas/CloudfsListMeta'
CloudfsFilesystemResponseWrapper:
type: object
properties:
data:
$ref: '#/components/schemas/CloudfsFilesystem'
CloudfsFilesystemStatus:
type: string
description: 'Lifecycle status of the filesystem. `ready` means it is fully provisioned and usable. `needs_format` means
the storage bucket and metadata database were provisioned but the filesystem has not yet been formatted — run `juicefs
format` with the filesystem''s `meta_url` before mounting. `failed` means the last lifecycle action failed — see the
filesystem''s `error` message. `deleted` appears only in the delete response: deleted filesystems are excluded from
list results and return a `404` on retrieval.'
enum:
- provisioning
- ready
- needs_format
- deleting
- failed
- deleted
example: ready
CloudfsListCursors:
type: object
description: Opaque cursors for the adjacent pages. Empty when there are no adjacent pages.
properties:
after:
type: string
description: Cursor for the next page; pass it as `page[after]`. Omitted on the last page.
before:
type: string
description: Cursor for the previous page; pass it as `page[before]`. Omitted on the first page.
CloudfsListMeta:
type: object
properties:
cursors:
$ref: '#/components/schemas/CloudfsListCursors'
next:
type: string
description: Relative URL (path and query) of the next page. Omitted when there are no further results.
previous:
type: string
description: Relative URL (path and query) of the previous page. Omitted on the first page.
ClusterNode:
properties:
filename:
type: string
description: The corresponding source file of your embedded storage bucket that the node is from.
text:
type: string
description: The text of the node.
type: object
required:
- filename
- text
title: ClusterNode
ClusteringRequestInfo:
properties:
task_id:
type: string
status:
$ref: '#/components/schemas/TaskStatus'
bucket:
type: string
created_at:
type: string
format: date-time
finished_at:
type: string
format: date-time
min_cluster_size:
type: integer
min_subcluster_size:
type: integer
type: object
required:
- task_id
- status
- bucket
- created_at
- finished_at
- min_cluster_size
- min_subcluster_size
title: ClusteringRequestInfo
ClusteringRequestInfoData:
properties:
data:
items:
$ref: '#/components/schemas/ClusteringRequestInfo'
type: array
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: ClusteringRequestInfoData
ClusteringStatusResponse:
properties:
status:
$ref: '#/components/schemas/TaskStatus'
bucket:
type: string
clusters:
items:
$ref: '#/components/schemas/RecursiveCluster'
type: array
type: object
required:
- status
- bucket
- clusters
title: ClusteringStatusResponse
ClusteringStatusResponseData:
properties:
data:
$ref: '#/components/schemas/ClusteringStatusResponse'
type: object
required:
- data
title: ClusteringStatusResponseData
CnamListing:
description: The CNAM listing settings for a phone number.
type: object
properties:
cnam_listing_enabled:
type: boolean
default: false
description: Enables CNAM listings for this number. Requires cnam_listing_details to also be set.
cnam_listing_details:
type: string
description: The CNAM listing details for this number. Must be alphanumeric characters or spaces with a maximum
length of 15. Requires cnam_listing_enabled to also be set to true.
example:
cnam_listing_enabled: true
cnam_listing_details: example
Collection:
type: object
properties:
uuid:
type: string
format: uuid
example: 6a09ccbd-8f9b-4c3a-9b0e-2f1d3c4b5a6e
slug:
type: string
example: support-transcripts
record_type:
type: string
description: Identifies the record type. Always `ai_collection`.
example: ai_collection
name:
type: string
example: Support Transcripts
description:
type: string
example: All customer support voice transcripts.
status:
type: string
example: ready
sources:
type: array
items:
$ref: '#/components/schemas/collections_Source'
settings:
$ref: '#/components/schemas/RetrievalSettingsWrapper'
created_at:
type: string
format: date-time
example: '2026-08-04T12:00:00Z'
updated_at:
type: string
format: date-time
example: '2026-08-04T12:00:00Z'
CollectionDocumentRecord:
type: object
properties:
id:
type: string
record_id:
type: string
record_type:
type: string
description: The source record kind this chunk came from (e.g. `voice`, `meeting_bot`, `message`).
example: voice
chunk_index:
type: integer
chunk_total:
type: integer
text:
type: string
score:
type: number
format: float
description: Relevance score (higher = more relevant) for ranked search. `0.0` for plain catalog listings (when
`query` is omitted).
region:
type: string
user_id:
type: string
organization_id:
type: string
record_created_at:
type: string
format: date-time
ingested_at:
type: string
format: date-time
metadata:
type: object
additionalProperties: true
CollectionEnvelope:
type: object
properties:
data:
$ref: '#/components/schemas/Collection'
CollectionListEnvelope:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Collection'
meta:
$ref: '#/components/schemas/ListMeta'
CollectionSearchMeta:
type: object
properties:
collection_slug:
type: string
example: support-transcripts
searched_sources:
type: array
items:
type: string
example:
- voice
- message
retrieval_type:
type: string
example: vector
top_k:
type: integer
example: 5
total_results:
type: integer
example: 42
total_pages:
type: integer
example: 3
page_number:
type: integer
example: 1
page_size:
type: integer
example: 20
CollectionSearchResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CollectionDocumentRecord'
meta:
$ref: '#/components/schemas/CollectionSearchMeta'
Comment:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
body:
type: string
example: Hi there, ....
commenter:
type: string
example: user@company.com
readOnly: true
commenter_type:
type: string
example: user
enum:
- admin
- user
readOnly: true
comment_record_type:
type: string
example: sub_number_order
enum:
- sub_number_order
- requirement_group
comment_record_id:
type: string
format: uuid
example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
read_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the comment was read.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the comment was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the comment was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
type: object
CommentList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/DirComment'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
CommentType:
type: string
enum:
- vetting_comment
- rejection_reason
- internal_note
- notification
- status_update
- customer_inquiry
- admin_response
description: Comment categorisation. Customers post `customer_inquiry`. The Telnyx team posts `vetting_comment`, `rejection_reason`,
`notification`, `status_update`, or `admin_response`. `internal_note` is filtered out of customer-visible responses.
CommentWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/DirComment'
ComparativeLine:
type: object
properties:
type:
type: string
enum:
- comparative
example: comparative
name:
type: string
description: Service name
example: Local DIDs
alias:
type: string
description: Service alias
example: local
new_this_month:
$ref: '#/components/schemas/MonthDetail'
existing_this_month:
$ref: '#/components/schemas/MonthDetail'
required:
- type
- name
- alias
- new_this_month
- existing_this_month
ComparisonExpression:
description: 'Compare two sub-expressions with a relational or membership operator.
Evaluates to a boolean. Used in edge conditions to gate transitions on
runtime values, e.g. `user_age >= 18` or `tier == "gold"`.'
example:
left:
name: user_age
type: variable
op: '>='
right:
type: number_literal
value: 18
type: comparison
properties:
left:
$ref: '#/components/schemas/Expression'
op:
description: Relational/membership operator. `contains` / `not_contains` apply to strings (substring) and arrays
(membership).
enum:
- ==
- '!='
- <
- <=
- '>'
- '>='
- contains
- not_contains
title: Op
type: string
right:
$ref: '#/components/schemas/Expression'
type:
const: comparison
title: Type
type: string
required:
- type
- op
- left
- right
title: ComparisonExpression
type: object
CompleteOTAUpdate:
type: object
title: OTAUpdate
description: This object represents an Over the Air (OTA) update request. It allows tracking the current status of a
operation that apply settings in a particular SIM card.
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
example: ota_update
readOnly: true
sim_card_id:
type: string
format: uuid
description: The identification UUID of the related SIM card resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
type:
type: string
description: Represents the type of the operation requested. This will relate directly to the source of the request.
enum:
- sim_card_network_preferences
example: sim_card_network_preferences
status:
type: string
enum:
- in-progress
- completed
- failed
example: in-progress
settings:
type: object
description: A JSON object representation of the operation. The information present here will relate directly to
the source of the OTA request.
properties:
mobile_network_operators_preferences:
$ref: '#/components/schemas/MobileNetworkOperatorsPreferencesResponse'
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
example:
created_at: '2018-02-02T22:25:27.521Z'
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: ota_update
settings:
mobile_network_operators_preferences:
- mobile_network_operator_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
mobile_network_operator_name: AT&T Mobility (USACG)
priority: 0
sim_card_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
status: in-progress
type: sim_card_network_preferences
updated_at: '2018-02-02T22:25:27.521Z'
ComputeActorType:
type: object
properties:
record_type:
type: string
example: compute_actor_type
id:
type: string
type:
type: string
example: Counter
status:
type: string
owner_function_id:
type: string
description: ID of the function that owns and ships this actor type. Empty when the type is unowned.
created_at:
type: string
updated_at:
type: string
placement:
$ref: '#/components/schemas/ActorPlacement'
ComputeActorTypeResponse:
type: object
properties:
data:
$ref: '#/components/schemas/ComputeActorType'
ComputeBinding:
type: object
description: A function-scoped binding persisted at ship time. For binding_type=actor, actor_type is the referenced
Stateful Actor type and env_name is the binding name exposed to the function.
properties:
record_type:
type: string
example: compute_binding
binding_id:
type: string
binding_type:
type: string
example: actor
env_name:
type: string
example: COUNTER
status:
type: string
actor_type:
type: string
example: Counter
secret_name:
type: string
sqldb_id:
type: string
kv_id:
type: string
bucket_id:
type: string
func_id:
type: string
created_at:
type: string
updated_at:
type: string
ComputeFunction:
type: object
properties:
record_type:
type: string
example: compute_func
id:
type: string
name:
type: string
status:
type: string
status_detail:
type: string
invoke_url:
type: string
created_at:
type: string
updated_at:
type: string
bindings:
type: array
description: Always present; empty when the function has no bindings.
items:
$ref: '#/components/schemas/ComputeBinding'
message:
type: string
example: Function deployed successfully
ComputeFunctionListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ComputeFunction'
meta:
$ref: '#/components/schemas/edge-compute_PaginationMeta'
Conference:
type: object
title: Conference
required:
- record_type
- id
- name
- created_at
- expires_at
properties:
record_type:
type: string
enum:
- conference
example: conference
id:
type: string
description: Uniquely identifies the conference
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name:
type: string
description: Name of the conference
example: All hands meeting
created_at:
type: string
description: ISO 8601 formatted date of when the conference was created
example: '2019-01-23T18:10:02.574Z'
expires_at:
type: string
description: ISO 8601 formatted date of when the conference will expire
example: '2019-01-23T18:10:02.574Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the conference was last updated
example: '2019-01-23T18:10:02.574Z'
region:
type: string
description: Region where the conference is hosted
example: sv1
status:
type: string
enum:
- init
- in_progress
- completed
description: Status of the conference
example: completed
end_reason:
type: string
enum:
- all_left
- ended_via_api
- host_left
- time_exceeded
description: Reason why the conference ended
example: all_left
ended_by:
type: object
description: IDs related to who ended the conference. It is expected for them to all be there or all be null
properties:
call_control_id:
type: string
description: Call Control ID which ended the conference
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==
call_session_id:
type: string
description: Call Session ID which ended the conference
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
connection_id:
type: string
description: Identifies the connection associated with the conference
example: 3fa85f64-9191-4567-b3fc-2c963f66afa6
example:
record_type: conference
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name: All hands meeting
created_at: '2019-01-23T18:10:02.574Z'
expires_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
region: sv1
status: completed
end_reason: all_left
ended_by:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
connection_id: 3fa85f64-9191-4567-b3fc-2c963f66afa6
ConferenceCommandResult:
type: object
title: Conference Command Result
required:
- result
properties:
result:
type: string
example: ok
example:
result: ok
ConferenceCreated:
type: object
title: Conference Created
example:
record_type: event
event_type: conference.created
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.created
enum:
- conference.created
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: Conference ID that the participant joined.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceCreatedEvent:
type: object
title: Conference Created Event
properties:
data:
$ref: '#/components/schemas/ConferenceCreated'
ConferenceDetailRecord:
type: object
properties:
id:
type: string
description: Conference id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
name:
type: string
description: Conference name
example: My Conference
user_id:
type: string
description: User id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
started_at:
type: string
description: Conference start time
format: date-time
example: '2020-07-01T00:00:00-06:00'
ended_at:
type: string
description: Conference end time
format: date-time
example: '2020-07-01T00:00:00-06:00'
expires_at:
type: string
description: Conference expiry time
format: date-time
example: '2020-07-01T00:00:00-06:00'
region:
type: string
description: Region where the conference is hosted
example: ch1
call_leg_id:
type: string
description: Telnyx UUID that identifies the conference call leg
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
call_session_id:
type: string
description: Telnyx UUID that identifies with conference call session
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
connection_id:
type: string
description: Connection id
example: '1583941447772537867'
call_sec:
type: integer
description: Duration of the conference call in seconds
example: 100
participant_count:
type: integer
description: Number of participants that joined the conference call
example: 5
participant_call_sec:
type: integer
description: Sum of the conference call duration for all participants in seconds
example: 100
is_telnyx_billable:
type: boolean
description: Indicates whether Telnyx billing charges might be applicable
example: false
record_type:
type: string
example: conference_detail_record
default: conference_detail_record
required:
- record_type
ConferenceEnded:
type: object
title: Conference Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.ended
enum:
- conference.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: Conference ID that the participant joined.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
reason:
type: string
enum:
- all_left
- host_left
- time_exceeded
description: Reason the conference ended.
example:
record_type: event
event_type: conference.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
reason: host_left
ConferenceEndedEvent:
type: object
title: Conference Ended Event
properties:
data:
$ref: '#/components/schemas/ConferenceEnded'
ConferenceFloorChangedEvent:
type: object
title: Conference Floor Changed
example:
record_type: event
event_type: conference.floor.changed
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.floor.changed
enum:
- conference.floor.changed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call Control ID of the new speaker.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: Call Leg ID of the new speaker.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: Call Session ID of the new speaker.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: Conference ID that had a speaker change event.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceGatherUsingAudioRequest:
type: object
title: Conference Gather Using Audio Request
required:
- call_control_id
properties:
call_control_id:
description: Unique identifier and token for controlling the call leg that will receive the gather prompt.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
audio_url:
description: The URL of the audio file to play as the gather prompt. Must be WAV or MP3 format.
type: string
example: http://example.com/gather_prompt.wav
media_name:
description: The name of the media file uploaded to the Media Storage API to play as the gather prompt.
type: string
minimum_digits:
description: Minimum number of digits to gather.
type: integer
default: 1
minimum: 1
example: 1
maximum_digits:
description: Maximum number of digits to gather.
type: integer
default: 128
minimum: 1
example: 10
maximum_tries:
description: Maximum number of times to play the prompt if no input is received.
type: integer
default: 3
minimum: 1
example: 3
timeout_millis:
description: Duration in milliseconds to wait for input before timing out.
type: integer
default: 60000
example: 30000
terminating_digit:
description: Digit that terminates gathering. Set to an empty string to disable the terminating digit entirely,
so that a digit such as `#` can be collected as input per `valid_digits`.
type: string
default: '#'
example: '#'
valid_digits:
description: Digits that are valid for gathering. All other digits will be ignored.
type: string
default: 0123456789#*
example: 0123456789
inter_digit_timeout_millis:
description: Duration in milliseconds to wait between digits.
type: integer
default: 5000
example: 3000
initial_timeout_millis:
description: Duration in milliseconds to wait for the first digit before timing out.
type: integer
example: 10000
stop_playback_on_dtmf:
description: Whether to stop the audio playback when a DTMF digit is received.
type: boolean
default: true
example: true
invalid_audio_url:
description: URL of audio file to play when invalid input is received.
type: string
invalid_media_name:
description: Name of media file to play when invalid input is received.
type: string
gather_id:
description: Identifier for this gather command. Will be included in the gather ended webhook. Maximum 100 characters.
type: string
maxLength: 100
client_state:
description: Use this field to add state to every subsequent webhook. Must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
audio_url: http://example.com/gather_prompt.wav
minimum_digits: 1
maximum_digits: 4
timeout_millis: 30000
ConferenceHoldRequest:
type: object
title: Conference Hold Request
properties:
call_control_ids:
description: List of unique identifiers and tokens for controlling the call. When empty all participants will be
placed on hold.
type: array
items:
type: string
audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played to the participants when they are put on hold. media_name and audio_url
cannot be used together in one request.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played to the participants when they are put on hold. The media_name
must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must
either be a WAV or MP3 file.
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_ids:
- v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
audio_url: http://example.com/message.wav
ConferenceMuteRequest:
type: object
title: Conference Mute Request
properties:
call_control_ids:
description: Array of unique identifiers and tokens for controlling the call. When empty all participants will be
muted.
type: array
items:
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_ids:
- v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ConferenceParticipant:
type: object
title: Conference Participant
properties:
id:
description: Uniquely identifies the participant.
type: string
call_control_id:
description: Unique identifier and token for controlling the participant's call leg.
type: string
call_leg_id:
description: Unique identifier for the call leg.
type: string
conference_id:
description: Unique identifier for the conference.
type: string
label:
description: Label assigned to the participant when joining.
type: string
status:
description: Status of the participant.
type: string
enum:
- joining
- joined
- left
muted:
description: Whether the participant is muted.
type: boolean
on_hold:
description: Whether the participant is on hold.
type: boolean
whisper_call_control_ids:
description: List of call control IDs this participant is whispering to.
type: array
items:
type: string
created_at:
description: Timestamp when the participant joined.
type: string
format: date-time
updated_at:
description: Timestamp when the participant was last updated.
type: string
format: date-time
end_conference_on_exit:
description: Whether the conference ends when this participant exits.
type: boolean
soft_end_conference_on_exit:
description: Whether the conference soft-ends when this participant exits.
type: boolean
ConferenceParticipantDetailRecord:
type: object
properties:
id:
type: string
description: Participant id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
user_id:
type: string
description: User id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
conference_id:
type: string
description: Conference id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
joined_at:
type: string
description: Participant join time
format: date-time
example: '2020-07-01T00:00:00-06:00'
left_at:
type: string
description: Participant leave time
format: date-time
example: '2020-07-01T00:00:00-06:00'
destination_number:
type: string
description: Number called by the participant to join the conference
example: '+18005550199'
originating_number:
type: string
description: Participant origin number used in the conference call
example: '+18005550199'
call_leg_id:
type: string
description: Telnyx UUID that identifies the conference call leg
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
call_session_id:
type: string
description: Telnyx UUID that identifies with conference call session
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
call_sec:
type: integer
description: Duration of the conference call in seconds
example: 100
billed_sec:
type: integer
description: Duration of the conference call for billing purposes
example: 120
is_telnyx_billable:
type: boolean
description: Indicates whether Telnyx billing charges might be applicable
example: true
rate:
type: string
description: Currency amount per billing unit used to calculate the Telnyx billing cost
example: '0.002'
rate_measured_in:
type: string
description: Billing unit used to calculate the Telnyx billing cost
example: minutes
cost:
type: string
description: Currency amount for Telnyx billing cost
example: '0.004'
currency:
type: string
description: Telnyx account currency used to describe monetary values, including billing cost
example: USD
record_type:
type: string
example: conference_participant_detail_record
default: conference_participant_detail_record
required:
- record_type
ConferenceParticipantJoined:
type: object
title: Conference Participant Joined
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.participant.joined
enum:
- conference.participant.joined
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: Conference ID that the participant joined.
example:
record_type: event
event_type: conference.participant.joined
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
ConferenceParticipantJoinedEvent:
type: object
title: Conference Participant Joined Event
properties:
data:
$ref: '#/components/schemas/ConferenceParticipantJoined'
ConferenceParticipantLeft:
type: object
title: Conference Participant Left
example:
record_type: event
event_type: conference.participant.left
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.participant.left
enum:
- conference.participant.left
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: Conference ID that the participant joined.
ConferenceParticipantLeftEvent:
type: object
title: Conference Participant Left Event
properties:
data:
$ref: '#/components/schemas/ConferenceParticipantLeft'
ConferenceParticipantPlaybackEnded:
type: object
title: Conference Participant Playback Ended
example:
record_type: event
event_type: conference.participant.playback.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.participant.playback.ended
enum:
- conference.participant.playback.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Participant's call ID used to issue commands via Call Control API.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
media_url:
type: string
example: http://example.com/audio.wav
description: The audio URL being played back, if audio_url has been used to start.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The name of the audio media file being played back, if media_name has been used to start.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceParticipantPlaybackEndedEvent:
type: object
title: Conference Participant Playback Ended Event
properties:
data:
$ref: '#/components/schemas/ConferenceParticipantPlaybackEnded'
ConferenceParticipantPlaybackStarted:
type: object
title: Conference Participant Playback Started
example:
record_type: event
event_type: conference.participant.playback.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.participant.playback.started
enum:
- conference.participant.playback.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Participant's call ID used to issue commands via Call Control API.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
media_url:
type: string
example: http://example.com/audio.wav
description: The audio URL being played back, if audio_url has been used to start.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The name of the audio media file being played back, if media_name has been used to start.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceParticipantPlaybackStartedEvent:
type: object
title: Conference Participant Playback Started Event
properties:
data:
$ref: '#/components/schemas/ConferenceParticipantPlaybackStarted'
ConferenceParticipantResource:
type: object
title: Conference Participant Resource
properties:
data:
$ref: '#/components/schemas/ConferenceParticipant'
ConferenceParticipantSpeakEnded:
type: object
title: Conference Participant Speak Ended
example:
record_type: event
event_type: conference.participant.speak.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.participant.speak.ended
enum:
- conference.participant.speak.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Participant's call ID used to issue commands via Call Control API.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceParticipantSpeakEndedEvent:
type: object
title: Conference Participant Speak Ended Event
properties:
data:
$ref: '#/components/schemas/ConferenceParticipantSpeakEnded'
ConferenceParticipantSpeakStarted:
type: object
title: Conference Participant Speak Started
example:
record_type: event
event_type: conference.participant.speak.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.participant.speak.started
enum:
- conference.participant.speak.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Participant's call ID used to issue commands via Call Control API.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceParticipantSpeakStartedEvent:
type: object
title: Conference Participant Speak Started Event
properties:
data:
$ref: '#/components/schemas/ConferenceParticipantSpeakStarted'
ConferencePlayRequest:
type: object
title: Conference Play Request
properties:
audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played back in the conference. media_name and audio_url cannot be used together
in one request.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played back in the conference. The media_name must point to a file previously
uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.
loop:
description: The number of times the audio file should be played. If supplied, the value must be an integer between
1 and 100, or the special string `infinity` for an endless loop.
example: infinity
default: 1
$ref: '#/components/schemas/Loopcount'
call_control_ids:
description: List of call control ids identifying participants the audio file should be played to. If not given,
the audio file will be played to the entire conference.
type: array
items:
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
audio_url: http://www.example.com/sounds/greeting.wav
ConferencePlaybackEnded:
type: object
title: Conference Playback Ended
example:
record_type: event
event_type: conference.playback.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.playback.ended
enum:
- conference.playback.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
media_url:
type: string
example: http://example.com/audio.wav
description: The audio URL being played back, if audio_url has been used to start.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The name of the audio media file being played back, if media_name has been used to start.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferencePlaybackEndedEvent:
type: object
title: Conference Playback Ended Event
properties:
data:
$ref: '#/components/schemas/ConferencePlaybackEnded'
ConferencePlaybackStarted:
type: object
title: Conference Playback Started
example:
record_type: event
event_type: conference.playback.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.playback.started
enum:
- conference.playback.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
media_url:
type: string
example: http://example.com/audio.wav
description: The audio URL being played back, if audio_url has been used to start.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The name of the audio media file being played back, if media_name has been used to start.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferencePlaybackStartedEvent:
type: object
title: Conference Playback Started Event
properties:
data:
$ref: '#/components/schemas/ConferencePlaybackStarted'
ConferenceRecordingResource:
type: object
title: Conference recording resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
channels: 1
conference_sid: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
duration: 5
media_url: https://www.example.com/download.mp3
sid: 136285da-4b74-46f1-a016-fe2982fa77c3
source: StartConferenceRecordingAPI
start_time: Fri, 27 Oct 2023 07:41:58 +0000
status: completed
subresource_uris:
transcriptions: null
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
call_sid:
type: string
description: The identifier of the related participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
channels:
type: integer
description: The number of channels in the recording.
example: 1
conference_sid:
type: string
description: The identifier of the related conference.
example: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
duration:
type: integer
description: Duratin of the recording in seconds.
example: 10
error_code:
type: string
description: The recording error, if any.
media_url:
type: string
description: The URL to use to download the recording.
example: https://www.example.com/download.mp3
sid:
type: string
description: The unique identifier of the recording.
example: 136285da-4b74-46f1-a016-fe2982fa77c3
source:
type: string
description: How the recording was started.
example: StartConferenceRecordingAPI
enum:
- DialVerb
- Conference
- OutboundAPI
- Trunking
- RecordVerb
- StartCallRecordingAPI
- StartConferenceRecordingAPI
start_time:
type: string
description: The timestamp of when the recording was started.
example: Thu, 15 Jun 2023 09:56:45 +0000
status:
type: string
description: The status of the recording.
enum:
- processing
- absent
- completed
- deleted
example: completed
subresource_uris:
type: object
description: A list of related resources identified by their relative URIs.
example:
transcriptions: null
additionalProperties: true
uri:
type: string
description: The relative URI for this recording.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json
ConferenceRecordingResourceIndex:
type: object
title: Multiple conference recording resources
example:
participants: []
end: 0
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20
page: 0
page_size: 20
start: 0
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20
properties:
recordings:
type: array
items:
$ref: '#/components/schemas/ConferenceRecordingResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: 19
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=0&PageSize=1
participants:
type: array
description: List of participant resources.
items:
type: object
example: []
ConferenceRecordingSaved:
type: object
title: Conference Recording Saved
example:
record_type: event
event_type: conference.recording.saved
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
channels: single
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
connection_id: 7267xxxxxxxxxxxxxx
format: mp3
public_recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
recording_ended_at: '2018-02-02T22:20:27.521992Z'
recording_id: 4577f9a2-cf0e-44f3-ac57-9f95fb03fa47
recording_started_at: '2021-05-11T10:17:03.692107Z'
recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.recording.saved
enum:
- conference.recording.saved
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Participant's call ID used to issue commands via Call Control API.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
channels:
type: string
example: single
enum:
- single
- dual
description: Whether recording was recorded in `single` or `dual` channel.
conference_id:
type: string
format: uuid
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference that is being recorded.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
format:
description: The audio file format used when storing the call recording. Can be either `mp3` or `wav`.
type: string
enum:
- wav
- mp3
example: mp3
public_recording_urls:
type: object
description: Recording URLs in requested format. The URL is valid for as long as the file exists. For security
purposes, this feature is activated on a per request basis. Please contact customer support with your Account
ID to request activation.
properties:
mp3:
type:
- string
- 'null'
example: http://example.com/recording.mp3
description: Recording URL in requested `mp3` format.
wav:
type:
- string
- 'null'
example: http://example.com/recording.wav
description: Recording URL in requested `wav` format.
recording_ended_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when recording ended.
recording_id:
type: string
format: uuid
example: 4577f9a2-cf0e-44f3-ac57-9f95fb03fa47
description: ID of the conference recording.
recording_started_at:
type: string
format: date-time
example: '2018-02-02T22:20:27.521992Z'
description: ISO 8601 datetime of when recording started.
recording_urls:
type: object
description: Recording URLs in requested format. These URLs are valid for 10 minutes. After 10 minutes, you
may retrieve recordings via API using Reports -> Call Recordings documentation, or via Mission Control under
Reporting -> Recordings.
properties:
mp3:
type:
- string
- 'null'
example: http://example.com/recording.mp3
description: Recording URL in requested `mp3` format.
wav:
type:
- string
- 'null'
example: http://example.com/recording.wav
description: Recording URL in requested `wav` format.
ConferenceRecordingSavedEvent:
type: object
title: Conference Recording Saved Event
properties:
data:
$ref: '#/components/schemas/ConferenceRecordingSaved'
ConferenceRegion:
description: Region where the conference data is located. Defaults to the region defined in user's data locality settings
(Europe or US).
example: US
type: string
enum:
- Australia
- Europe
- Middle East
- US
ConferenceResource:
type: object
title: Conference resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
api_version: v2/texml
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
friendly_name: weekly_review_call
region: dc2
sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
status: in-progress
subresource_uris:
participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json
recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json
uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
api_version:
type: string
description: The version of the API that was used to make the request.
example: v2/texml
call_sid_ending_conference:
type: string
description: Caller ID, if present.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
friendly_name:
type: string
description: A string that you assigned to describe this conference room.
example: weekly_review_call
reason_conference_ended:
type: string
description: The reason why a conference ended. When a conference is in progress, will be null.
enum:
- participant-with-end-conference-on-exit-left
- last-participant-left
- conference-ended-via-api
- time-exceeded
example: time-exceeded
region:
type: string
description: A string representing the region where the conference is hosted.
example: dc2
sid:
type: string
description: The unique identifier of the conference.
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
status:
type: string
description: The status of this conference.
enum:
- init
- in-progress
- completed
example: in-progress
subresource_uris:
type: object
description: A list of related resources identified by their relative URIs.
example:
participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json
recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json
additionalProperties: true
uri:
type: string
description: The relative URI for this conference.
example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json
ConferenceResourceIndex:
type: object
title: Multiple conference resources
example:
conferences: []
end: 0
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
page: 0
page_size: 1
start: 0
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
properties:
conferences:
type: array
items:
$ref: '#/components/schemas/ConferenceResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: 19
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
ConferenceSendDTMFRequest:
type: object
title: Conference Send DTMF Request
required:
- digits
properties:
digits:
description: 'DTMF digits to send. Valid characters: 0-9, A-D, *, #, w (0.5s pause), W (1s pause).'
type: string
example: 1234#
call_control_ids:
description: Array of participant call control IDs to send DTMF to. When empty, DTMF will be sent to all participants.
type: array
items:
type: string
example:
- v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
duration_millis:
description: Duration of each DTMF digit in milliseconds.
type: integer
minimum: 100
maximum: 500
default: 250
example: 250
client_state:
description: Use this field to add state to every subsequent webhook. Must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
example:
digits: 1234#
duration_millis: 250
ConferenceSid:
type:
- string
- 'null'
format: uuid
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
ConferenceSpeakEnded:
type: object
title: Conference Speak Ended
example:
record_type: event
event_type: conference.speak.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.speak.ended
enum:
- conference.speak.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceSpeakEndedEvent:
type: object
title: Conference Speak Ended Event
properties:
data:
$ref: '#/components/schemas/ConferenceSpeakEnded'
ConferenceSpeakRequest:
type: object
title: Conference Speak Request
required:
- payload
- voice
properties:
call_control_ids:
description: Call Control IDs of participants who will hear the spoken text. When empty all participants will hear
the spoken text.
type: array
items:
type: string
payload:
description: The text or SSML to be converted into speech. There is a 3,000 character limit.
type: string
example: Say this to participants
payload_type:
description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup
Language (SSML).
default: text
type: string
enum:
- text
- ssml
example: ssml
voice:
description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`.\
\ Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n\
- **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic,\
\ human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available\
\ voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:**\
\ Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`).\
\ For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\
\ Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..`\
\ (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs,\
\ you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\"\
: \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)\
\ for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n- **Telnyx:** Use\
\ `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed\
\ and other synthesis parameters. `Bayan` provides Arabic (multiple dialects) and English voices (e.g., `Telnyx.Bayan.Ahmed`,\
\ `Telnyx.Bayan.Amanda`). `Sukhan` provides Urdu voices (e.g., `Telnyx.Sukhan.urdu-professor`); `voice_speed`\
\ is not supported.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`).\
\ Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings`\
\ to configure speed, volume, pitch, and language_boost.\n- **Resemble:** Use `Resemble.Turbo.` (e.g.,\
\ `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate,\
\ and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`,\
\ `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. Use `voice_settings` to configure `delivery_mode`\
\ (`STABLE`, `BALANCED`, `CREATIVE`), supported by `TTS2` only.\n- **Fish Audio:** Use `FishAudio..`\
\ (e.g., `FishAudio.s2.1-pro.`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish\
\ Voice-Library reference ID.\n- **Soniox:** Use `Soniox..` (e.g., `Soniox.tts-rt-v2.Emma`).\
\ Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices).\
\ Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for\
\ example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n\
- **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:**\
\ Use `Humain.` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`,\
\ `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.\n\n\
For service_level basic, you may define the gender of the speaker (male or female)."
type: string
example: Telnyx.KokoroTTS.af
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/MinimaxVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/InworldVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
minimax: '#/components/schemas/MinimaxVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
inworld: '#/components/schemas/InworldVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
language:
description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.
type: string
enum:
- arb
- cmn-CN
- cy-GB
- da-DK
- de-DE
- en-AU
- en-GB
- en-GB-WLS
- en-IN
- en-US
- es-ES
- es-MX
- es-US
- fr-CA
- fr-FR
- hi-IN
- is-IS
- it-IT
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pl-PL
- pt-BR
- pt-PT
- ro-RO
- ru-RU
- sv-SE
- tr-TR
example: en-US
command_id:
description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with
the same `command_id` as one that has already been executed.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_ids:
- v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
payload: Say this to participants
payload_type: text
voice: female
language: en-US
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
ConferenceSpeakStarted:
type: object
title: Conference Speak Started
example:
record_type: event
event_type: conference.speak.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: conference.speak.started
enum:
- conference.speak.started
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
payload:
type: object
properties:
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
creator_call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session that started the conference.
conference_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID of the conference the text was spoken in.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
description: ISO 8601 datetime of when the event occurred.
ConferenceSpeakStartedEvent:
type: object
title: Conference Speak Started Event
properties:
data:
$ref: '#/components/schemas/ConferenceSpeakStarted'
ConferenceStopRequest:
type: object
title: Conference Stop Request
properties:
call_control_ids:
description: List of call control ids identifying participants the audio file should stop be played to. If not given,
the audio will be stoped to the entire conference.
type: array
items:
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
ConferenceUnholdRequest:
required:
- call_control_ids
type: object
title: Conference Unhold Request
properties:
call_control_ids:
description: List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unheld.
type: array
items:
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_ids:
- v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ConferenceUnmuteRequest:
type: object
title: Conference Unmute Request
properties:
call_control_ids:
description: List of unique identifiers and tokens for controlling the call. Enter each call control ID to be unmuted.
When empty all participants will be unmuted.
type: array
items:
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_ids:
- v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
Connection:
type: object
title: Connection
properties:
id:
type: string
description: Identifies the specific resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: ip_connection
active:
type: boolean
description: Defaults to true
example: true
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
type: string
example: string
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
webhook_event_url:
description: The URL where webhooks related to this connection will be sent.
type:
- string
- 'null'
format: uri
default: null
example: https://example.com
webhook_event_failover_url:
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails.
type:
- string
- 'null'
format: uri
default: ''
example: https://failover.example.com
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1 or v2.
type: string
enum:
- '1'
- '2'
default: '1'
example: '1'
outbound_voice_profile_id:
$ref: '#/components/schemas/connections_OutboundVoiceProfileId'
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: ip_connection
active: true
anchorsite_override: Latency
connection_name: string
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
outbound_voice_profile_id: '1293384261075731499'
ConnectionActive:
title: Connection Active
type: boolean
description: Specifies whether the connection can be used.
default: true
example: false
ConnectionAndroidPushCredentialId:
title: Android Push Credential Id
type:
- string
- 'null'
description: The uuid of the push credential for Android
example: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
default: null
ConnectionId:
description: The ID of the connection used to send the fax.
type: string
example: '234423'
ConnectionIdCredentials:
type: string
description: Uniquely identifies a Telnyx application (Call Control, TeXML) or Sip connection resource.
example: '1234567890'
ConnectionIosPushCredentialId:
title: Ios Push Credential Id
type:
- string
- 'null'
description: The uuid of the push credential for Ios
example: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
default: null
ConnectionJitterBuffer:
type: object
description: Configuration options for Jitter Buffer. Enables Jitter Buffer for RTP streams of SIP Trunking calls. The
feature is off unless enabled. You may define min and max values in msec for customized buffering behaviors. Larger
values add latency but tolerate more jitter, while smaller values reduce latency but are more sensitive to jitter
and reordering.
properties:
enable_jitter_buffer:
type: boolean
description: Enables Jitter Buffer for RTP streams of SIP Trunking calls. The feature is off unless enabled.
default: false
example: true
jitterbuffer_msec_min:
type: integer
description: The minimum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer
is not true.
minimum: 40
maximum: 400
default: 60
example: 60
jitterbuffer_msec_max:
type: integer
description: The maximum jitter buffer size in milliseconds. Must be between 40 and 400. Has no effect if enable_jitter_buffer
is not true.
minimum: 40
maximum: 400
default: 200
example: 200
ConnectionName:
title: Connection Name
type: string
description: A user-assigned name to help manage the connection.
example: office-connection
ConnectionNoiseSuppression:
type: string
description: Controls when noise suppression is applied to calls. When set to 'inbound', noise suppression is applied
to incoming audio. When set to 'outbound', it's applied to outgoing audio. When set to 'both', it's applied in both
directions. When set to 'disabled', noise suppression is turned off.
enum:
- inbound
- outbound
- both
- disabled
example: both
ConnectionNoiseSuppressionDetails:
type: object
description: Configuration options for noise suppression. These settings are stored regardless of the noise_suppression
value, but only take effect when noise_suppression is not 'disabled'. If you disable noise suppression and later re-enable
it, the previously configured settings will be used.
properties:
engine:
type: string
description: The noise suppression engine to use. 'denoiser' is the default engine. 'deep_filter_net' and 'deep_filter_net_large'
are alternative engines with different performance characteristics. Krisp engines ('krisp_viva_tel', 'krisp_viva_tel_lite',
'krisp_viva_promodel', 'krisp_viva_ss') provide advanced noise suppression capabilities. 'quail_voice_focus' provides
Quail-based voice focus noise suppression.
enum:
- denoiser
- deep_filter_net
- deep_filter_net_large
- krisp_viva_tel
- krisp_viva_tel_lite
- krisp_viva_promodel
- krisp_viva_ss
- quail_voice_focus
default: denoiser
example: deep_filter_net
attenuation_limit:
type: integer
description: 'The attenuation limit value for the selected engine. Default values vary by engine: 0 for ''denoiser'',
80 for ''deep_filter_net'', ''deep_filter_net_large'', and all Krisp engines (''krisp_viva_tel'', ''krisp_viva_tel_lite'',
''krisp_viva_promodel'', ''krisp_viva_ss''), 100 for ''quail_voice_focus''.'
minimum: 0
maximum: 100
multipleOf: 10
example: 80
ConnectionRtcpSettings:
type: object
title: Connection RTCP Settings
properties:
port:
enum:
- rtcp-mux
- rtp+1
default: rtp+1
description: RTCP port by default is rtp+1, it can also be set to rtcp-mux
type: string
capture_enabled:
type: boolean
default: false
description: Enable the capture and storage of RTCP messages to create QoS reports on the Telnyx Mission Control
Portal.
example: true
report_frequency_secs:
type: integer
default: 5
description: RTCP reports are sent to customers based on the frequency set. Frequency is in seconds and it can be
set to values from 5 to 3000 seconds.
example: 10
example:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
ConnectionsCount:
title: Connections Count
type: object
required:
- record_type
- counts
- limits
properties:
record_type:
type: string
description: Identifies the type of the resource.
example: connections_count
counts:
type: object
description: Counts of the authenticated user's connections, grouped by connection type. Forward-only connections
are excluded.
required:
- ip_connections
- credential_connections
- uac_connections
- fqdn_connections
- call_control_applications
- texml_applications
- third_party_provider_connections
- external_connections
- fax_connections
- mobile_voice_connections
- microsoft_teams_sbc_connections
- zoom_sbc_connections
- operator_connect_connections
properties:
ip_connections:
type: integer
description: Number of IP connections.
credential_connections:
type: integer
description: Number of credential connections.
uac_connections:
type: integer
description: Number of UAC connections.
fqdn_connections:
type: integer
description: Number of FQDN connections.
call_control_applications:
type: integer
description: Number of Call Control applications.
texml_applications:
type: integer
description: Number of TeXML applications.
third_party_provider_connections:
type: integer
description: Number of third-party provider connections.
external_connections:
type: integer
description: Number of external connections.
fax_connections:
type: integer
description: Number of Fax applications.
mobile_voice_connections:
type: integer
description: Number of mobile voice (IMS) connections.
microsoft_teams_sbc_connections:
type: integer
description: Number of Microsoft Teams SBC (direct routing) connections.
zoom_sbc_connections:
type: integer
description: Number of Zoom SBC connections.
operator_connect_connections:
type: integer
description: Number of Microsoft Operator Connect connections.
limits:
type: object
description: Connection limits that apply to the user. Contains a single global_limit when a global connection limit
applies, or per-type limits (standard_limit, texml_limit and uac_limit) when the user has per-type connection
count capabilities.
oneOf:
- title: Global Connection Limit
type: object
additionalProperties: false
required:
- global_limit
properties:
global_limit:
type: integer
description: Maximum total number of connections allowed, when a global limit applies.
example: 10000
- title: Per-type Connection Limits
type: object
additionalProperties: false
required:
- standard_limit
- texml_limit
- uac_limit
properties:
standard_limit:
type: integer
description: Maximum number of standard connections allowed, when per-type limits apply.
texml_limit:
type: integer
description: Maximum number of TeXML applications allowed, when per-type limits apply.
uac_limit:
type: integer
description: Maximum number of UAC connections allowed, when per-type limits apply.
ConsentTokenResponse:
type: object
properties:
data:
type: object
properties:
client_id:
type: string
description: Client ID
name:
type: string
description: Client name
requested_scopes:
type: array
items:
type: object
properties:
id:
type: string
description: Scope ID
name:
type: string
description: Scope name
description:
type: string
description: Scope description
logo_uri:
type:
- string
- 'null'
format: uri
description: URL of the client logo
tos_uri:
type:
- string
- 'null'
format: uri
description: URL of the client's terms of service
policy_uri:
type:
- string
- 'null'
format: uri
description: URL of the client's privacy policy
redirect_uri:
type: string
format: uri
description: The redirect URI for this authorization
verified:
type: boolean
description: Whether the client is verified
ConsumedData:
type: object
title: ConsumedData
description: Represents the amount of data consumed.
properties:
unit:
type: string
example: MB
default: MB
amount:
type: string
example: '2048.1'
ContentResult:
type: object
required:
- url
properties:
url:
type: string
format: uri
description: The source URL.
title:
type: string
description: Page title (if available).
html:
type: string
description: Cleaned HTML content (if `html` format requested; may also be present on freshly crawled pages).
markdown:
type: string
description: Markdown content (if `markdown` format requested).
metadata:
type: object
properties:
site_name:
type: string
description: Site name. Often empty.
favicon_url:
type: string
format: uri
description: Favicon URL (if available).
additionalProperties: true
description: Page metadata (if `metadata` format requested).
ContentsRequest:
type: object
required:
- urls
properties:
urls:
type: array
items:
type: string
format: uri
minItems: 1
maxItems: 20
description: List of URLs to retrieve content from (max 20 for public API).
example:
- https://en.wikipedia.org/wiki/Artificial_intelligence
formats:
type: array
items:
type: string
enum:
- html
- markdown
- metadata
maxItems: 3
description: 'Content formats to return. If omitted, `html` and `metadata` are returned by default. Retrieval is
best-effort per URL: a format field appears only when that content could be produced, and a freshly crawled page
may also include `html` even when not requested.'
example:
- markdown
- metadata
crawl_timeout:
type: integer
minimum: 1
maximum: 60
description: Timeout for crawling each URL, in seconds (1-60).
example: 10
max_age:
type:
- integer
- 'null'
minimum: 0
description: Maximum age of cached content in seconds. `null` means no limit.
example: null
ContentsResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/ContentResult'
ContestSubmission:
type: object
description: One round of customer contest evidence on an infringement claim. The aggregated documents across rounds
live on the parent claim's `contest_documents`; this submission record carries only the per-round notes and document
count.
properties:
notes:
type: string
example: We own the trademark outright; our registration precedes the claimant by three years.
submitted_at:
type: string
format: date-time
example: '2026-04-22T02:13:06.629473Z'
readOnly: true
document_count:
type: integer
minimum: 0
example: 1
readOnly: true
Conversation:
type: object
properties:
id:
type: string
format: uuid
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name:
type: string
example: ''
created_at:
type: string
description: The datetime the conversation was created.
format: date-time
example: '2025-04-15T13:07:28.764Z'
metadata:
type: object
description: Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers
can also add their own. The reserved field `ai_disabled` (boolean) can be set to `true` to prevent AI-generated
responses on this conversation. When `ai_disabled` is `true`, calls to the chat endpoint will return a 400 error.
Set to `false` or remove the field to re-enable AI responses. This is useful when a human agent needs to take
over the conversation mid-stream (e.g., a technician stepping in while AI was messaging a resident).
additionalProperties:
type: string
example:
telnyx_conversation_channel: sms
telnyx_agent_target: '+13128675309'
telnyx_end_user_target: '+13128675309'
assistant_id: assistant-123
last_message_at:
type: string
description: The datetime of the latest message in the conversation.
format: date-time
example: '2025-04-15T13:07:28.764Z'
required:
- id
- created_at
- metadata
- last_message_at
ConversationChannelType:
type: string
enum:
- phone_call
- sms_chat
title: ConversationChannelType
ConversationFlow:
description: Conversation flow as returned by the API.
example:
edges:
- condition:
prompt: The caller is asking about a bill or charge.
type: llm
id: e_intake_to_billing
start_node_id: n_intake
target:
node_id: n_billing
type: node
- condition:
prompt: The caller has explicitly asked for a human.
type: llm
id: e_intake_to_escalation_assistant
start_node_id: n_intake
target:
assistant_id: assistant-human-handoff
position:
x: 600
y: 80
type: assistant
voice_mode: distinct
nodes:
- type: prompt
id: n_intake
instructions: Greet the caller and ask what they're calling about.
name: Intake
position:
x: 120
y: 80
shared_tool_ids:
- tool-faq-kb
- type: prompt
id: n_billing
instructions: Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering.
instructions_mode: append
model: moonshotai/Kimi-K2.6
name: Billing
position:
x: 420
y: 80
shared_tool_ids:
- tool-billing-lookup
tools_mode: append
start_node_id: n_intake
properties:
edges:
description: Directed transitions between nodes.
items:
$ref: '#/components/schemas/FlowEdge'
title: Edges
type: array
nodes:
description: All nodes in the flow.
items:
discriminator:
mapping:
prompt: '#/components/schemas/FlowNode'
speak: '#/components/schemas/SpeakNode'
tool: '#/components/schemas/ToolNode'
propertyName: type
oneOf:
- $ref: '#/components/schemas/FlowNode'
- $ref: '#/components/schemas/ToolNode'
- $ref: '#/components/schemas/SpeakNode'
title: Nodes
type: array
start_node_id:
description: ID of the node where the conversation begins.
title: Start Node Id
type: string
required:
- start_node_id
- nodes
title: ConversationFlow
type: object
ConversationFlowReq:
description: 'Conversation flow as supplied by API clients (create / update).
A directed graph of `FlowNodeReq` connected by `FlowEdge`s. Validation
enforces unique node/edge IDs, that `start_node_id` references a real
node, and that every edge''s endpoints reference real nodes.'
example:
edges:
- condition:
prompt: The caller is asking about a bill or charge.
type: llm
id: e_intake_to_billing
start_node_id: n_intake
target:
node_id: n_billing
type: node
- condition:
prompt: The caller has explicitly asked for a human.
type: llm
id: e_intake_to_escalation_assistant
start_node_id: n_intake
target:
assistant_id: assistant-human-handoff
position:
x: 600
y: 80
type: assistant
voice_mode: distinct
nodes:
- type: prompt
id: n_intake
instructions: Greet the caller and ask what they're calling about.
name: Intake
position:
x: 120
y: 80
shared_tool_ids:
- tool-faq-kb
- type: prompt
id: n_billing
instructions: Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering.
instructions_mode: append
model: moonshotai/Kimi-K2.6
name: Billing
position:
x: 420
y: 80
shared_tool_ids:
- tool-billing-lookup
tools_mode: append
start_node_id: n_intake
properties:
edges:
description: Directed transitions between nodes. May be empty for a single-node flow.
items:
$ref: '#/components/schemas/FlowEdge'
title: Edges
type: array
nodes:
description: 'All nodes in the flow. Must contain `start_node_id`. Each node is a prompt node (`type: prompt`),
a tool node (`type: tool`), or a speak node (`type: speak`).'
items:
discriminator:
mapping:
prompt: '#/components/schemas/FlowNodeReq'
tool: '#/components/schemas/ToolNodeReq'
speak: '#/components/schemas/SpeakNodeReq'
propertyName: type
oneOf:
- $ref: '#/components/schemas/FlowNodeReq'
- $ref: '#/components/schemas/ToolNodeReq'
- $ref: '#/components/schemas/SpeakNodeReq'
title: Nodes
type: array
start_node_id:
description: ID of the node where the conversation begins.
example: n_intake
title: Start Node Id
type: string
required:
- start_node_id
- nodes
title: ConversationFlowReq
type: object
ConversationHistoryRecord:
type: object
description: A single search result representing one chunk of a conversation history record. Records are split into
chunks of up to 480 tokens with 64-token overlap at ingestion time.
required:
- id
- record_id
- chunk_index
- chunk_total
- text
- score
- region
- user_id
- organization_id
- record_created_at
- ingested_at
properties:
id:
type: string
description: Unique chunk identifier.
example: rec-001_chunk_0
record_id:
type: string
description: Identifier of the parent record. Multiple chunks from the same record share this ID.
example: rec-001
chunk_index:
type: integer
description: Zero-based index of this chunk within the parent record.
example: 0
chunk_total:
type: integer
description: Total number of chunks the parent record was split into.
example: 3
text:
type: string
description: The text content of this chunk (up to 480 tokens).
example: Customer called regarding a billing discrepancy on their latest invoice.
score:
type: number
format: float
description: Cosine similarity score between the query vector and this chunk's vector. Higher values indicate greater
semantic relevance.
example: 0.92
region:
type: string
enum:
- USA
- DEU
- AUS
- UAE
description: The region where this record is stored.
example: USA
user_id:
type: string
description: Identifier of the user who owns this record.
example: user-123
organization_id:
type: string
description: Identifier of the organization that owns this record.
example: org-456
record_created_at:
type: string
format: date-time
description: When the original record was created (ISO 8601).
example: '2026-05-28T12:00:00Z'
ingested_at:
type: string
format: date-time
description: When the record was chunked, embedded, and indexed (ISO 8601).
example: '2026-05-28T12:01:00Z'
metadata:
type: object
additionalProperties: true
default: {}
description: Arbitrary metadata attached to the record at ingestion time. Filterable via filter[field]=value query
parameters.
example:
source: call-center
language: en
ConversationHistoryResponse:
type: object
description: Search response following the standard Telnyx V2 API format.
required:
- data
- meta
properties:
data:
type: array
description: Ranked list of matching text chunks, sorted by cosine similarity score descending.
items:
$ref: '#/components/schemas/ConversationHistoryRecord'
meta:
$ref: '#/components/schemas/transcriptions-search_PaginationMeta'
ConversationInsight:
type: object
required:
- id
- status
- created_at
- conversation_insights
properties:
id:
type: string
description: Unique identifier for the conversation insight.
status:
type: string
enum:
- pending
- in_progress
- completed
- failed
description: Current status of the insight generation for the conversation.
created_at:
type: string
format: date-time
description: Timestamp of when the object was created.
conversation_insights:
type: array
description: List of insights extracted from the conversation.
items:
type: object
required:
- result
- insight_id
properties:
result:
type: string
description: Insight result from the conversation. If the insight has a JSON schema, this will be stringified
JSON object.
insight_id:
type: string
description: Unique identifier for the insight configuration.
ConversationInsightAggregateResp:
properties:
data:
items:
additionalProperties: true
type: object
description: An aggregation row. Contains the grouped field values (keyed by the group_by field names) and a `record_count`
integer. For example, when grouping by `score`, each row has a `score` value and a `record_count` of conversations
with that score. When also splitting by `metadata.assistant_version_id`, each row includes both `score` and
`metadata.assistant_version_id` plus their combined `record_count`.
properties:
record_count:
type: integer
description: Number of conversation insights that match this combination of grouped field values.
required:
- record_count
type: array
title: Data
description: Aggregation result rows. Each row contains the grouped field values and a `record_count`.
type: object
required:
- data
title: ConversationInsightAggregateResp
description: Aggregated conversation insight counts grouped by the specified fields. Each item in `data` contains the
grouped field values and a `record_count` indicating how many conversation insights match that combination.
ConversationInsightListData:
properties:
data:
items:
$ref: '#/components/schemas/ConversationInsight'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: ConversationInsightListData
ConversationMessage:
type: object
required:
- role
- text
properties:
role:
type: string
enum:
- user
- assistant
- tool
description: The role of the message sender.
text:
type: string
description: The message content. Can be null for tool calls.
tool_calls:
type: array
description: Optional tool calls made by the assistant.
items:
type: object
properties:
id:
type: string
description: Unique identifier for the tool call.
type:
type: string
enum:
- function
description: Type of the tool call.
function:
type: object
properties:
name:
type: string
description: Name of the function to call.
arguments:
type: string
description: JSON-formatted arguments to pass to the function.
required:
- name
- arguments
required:
- id
- type
- function
created_at:
type: string
description: The datetime the message was created on the conversation. This does not necesarily correspond to the
time the message was sent. The best field to use to determine the time the end user experienced the message is
`sent_at`.
format: date-time
example: '2025-04-15T13:07:28.764Z'
sent_at:
type: string
description: The datetime the message was sent to the end user.
format: date-time
example: '2025-04-15T13:07:28.764Z'
metadata:
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
- items:
anyOf:
- type: string
- type: integer
- type: boolean
type: array
type: object
title: Metadata
ConversationMessageListData:
properties:
data:
items:
$ref: '#/components/schemas/ConversationMessage'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: ConversationMessageListData
ConversationRelayAssistant:
type: object
title: Conversation Relay Custom Parameters
description: Custom parameters for the Conversation Relay session. Pass key-value data as `assistant.dynamic_variables`
to make it available to the relay session.
properties:
dynamic_variables:
type: object
description: Custom key-value parameters forwarded to the Conversation Relay session.
additionalProperties:
type: string
example:
customer_id: '12345'
tier: premium
additionalProperties: true
ConversationRelayEmbeddedConfig:
type: object
title: Conversation Relay Embedded Config
description: Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded
shape is supported on `answer` and `dial`. It uses public field names (`url`, `dtmf_detection`, `greeting`, `voice`,
`language`, etc.) and maps them to the underlying Conversation Relay action. `client_state`, `tts_language`, and `transcription_language`
inside this object are ignored; use the parent command's `client_state` and `command_id` fields instead.
properties:
url:
type: string
pattern: ^wss?://
description: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.
example: wss://example.com/conversation-relay
dtmf_detection:
type: boolean
description: Enable DTMF detection for the relay session.
default: false
example: true
greeting:
type: string
description: Text played when the relay session starts.
example: Hi! Ask me anything!
voice:
$ref: '#/components/schemas/VoiceConfig'
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/MinimaxVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/InworldVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
minimax: '#/components/schemas/MinimaxVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
inworld: '#/components/schemas/InworldVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
tts_provider:
type: string
description: Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`.
example: telnyx
provider:
type: string
description: Structured voice provider. Must be supplied together with `structured_provider`.
example: elevenlabs
structured_provider:
$ref: '#/components/schemas/ConversationRelayStructuredProvider'
language:
type: string
description: Default language for both text-to-speech and speech recognition.
default: en
example: en-US
languages:
type: array
description: Per-language TTS and transcription settings.
items:
$ref: '#/components/schemas/ConversationRelayLanguage'
interruptible:
$ref: '#/components/schemas/ConversationRelayInterruptible'
interruptible_greeting:
$ref: '#/components/schemas/ConversationRelayInterruptible'
interruption_settings:
$ref: '#/components/schemas/ConversationRelayInterruptionSettings'
transcription_engine:
description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for
backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription`
object is not supported.
type: string
enum:
- Google
- Telnyx
- Deepgram
- Azure
- xAI
- AssemblyAI
- Speechmatics
- Soniox
- A
- B
default: Google
example: Google
transcription_engine_config:
$ref: '#/components/schemas/ConversationRelayTranscriptionEngineConfig'
custom_parameters:
type: object
description: Custom key-value parameters forwarded to the relay session as assistant dynamic variables.
additionalProperties: true
example:
customer_id: '12345'
required:
- url
example:
url: wss://example.com/conversation-relay
dtmf_detection: true
greeting: Hi! Ask me anything!
voice: Telnyx.KokoroTTS.af
tts_provider: telnyx
voice_settings:
type: telnyx
language: en-US
languages:
- language: en-US
voice: Telnyx.Ultra.alloy
tts_provider: telnyx
transcription_engine: Deepgram
transcription_engine_config:
transcription_model: deepgram/nova-3
interruptible: speech
interruptible_greeting: dtmf
custom_parameters:
customer_id: '12345'
ConversationRelayInterruptible:
type: string
description: Controls when caller input can interrupt assistant speech. `any` allows speech or DTMF interruptions; `none`
disables interruptions; `speech` allows speech only; `dtmf` allows DTMF only.
enum:
- none
- any
- speech
- dtmf
default: any
example: speech
ConversationRelayInterruptionSettings:
type: object
title: Conversation Relay Interruption Settings
description: Settings for handling caller interruptions during Conversation Relay speech.
properties:
enable:
type: boolean
description: Legacy boolean form. `true` is equivalent to `interruptible=any`; `false` is equivalent to `interruptible=none`.
interruptible:
$ref: '#/components/schemas/ConversationRelayInterruptible'
interruptible_greeting:
$ref: '#/components/schemas/ConversationRelayInterruptible'
welcome_greeting_interruptible:
$ref: '#/components/schemas/ConversationRelayInterruptible'
ConversationRelayLanguage:
type: object
title: Conversation Relay Language
description: Language-specific TTS and transcription settings for Conversation Relay.
properties:
language:
type: string
description: BCP 47 language tag for this language configuration.
example: en-US
tts_provider:
type: string
description: Text-to-speech provider for this language. If omitted and `voice` is provided, Telnyx derives the provider
from the voice identifier.
example: telnyx
voice:
type: string
description: Voice identifier for this language.
example: Telnyx.KokoroTTS.af
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/MinimaxVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/InworldVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
minimax: '#/components/schemas/MinimaxVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
inworld: '#/components/schemas/InworldVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
transcription_engine:
description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for
backward compatibility. When provided in a Conversation Relay language entry, Telnyx derives `transcription_provider`
and `speech_model` for that language.
type: string
enum:
- Google
- Telnyx
- Deepgram
- Azure
- xAI
- AssemblyAI
- Speechmatics
- Soniox
- A
- B
default: Google
example: Google
transcription_engine_config:
$ref: '#/components/schemas/ConversationRelayTranscriptionEngineConfig'
transcription_provider:
type: string
description: Conversation Relay transcription provider name. Prefer `transcription_engine` when configuring speech-to-text.
example: Deepgram
speech_model:
type: string
description: Conversation Relay speech model. Prefer `transcription_engine_config.transcription_model` when configuring
speech-to-text.
example: nova-3
required:
- language
ConversationRelaySettings:
type: object
title: Conversation Relay Settings
description: Conversation Relay connection settings. This object can provide `url`, `dtmf_detection`, `interruptible`,
`interruptible_greeting`, and `languages`. Top-level aliases override nested values when both are present.
properties:
url:
type: string
pattern: ^wss?://
description: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.
example: wss://example.com/conversation-relay
dtmf_detection:
type: boolean
description: Whether to enable DTMF detection during the relay session.
default: false
example: true
interruptible:
$ref: '#/components/schemas/ConversationRelayInterruptible'
interruptible_greeting:
$ref: '#/components/schemas/ConversationRelayInterruptible'
languages:
type: array
description: Language-specific TTS and transcription settings.
items:
$ref: '#/components/schemas/ConversationRelayLanguage'
required:
- url
example:
url: wss://example.com/conversation-relay
dtmf_detection: true
interruptible: speech
interruptible_greeting: dtmf
languages:
- language: en-US
tts_provider: telnyx
voice: Telnyx.KokoroTTS.af
transcription_engine: Deepgram
transcription_engine_config:
transcription_model: deepgram/nova-3
ConversationRelayStartRequest:
type: object
title: Conversation Relay Start Request
description: 'Start a Conversation Relay session. A WebSocket URL is required: provide it as `url`, `conversation_relay_url`,
or `conversation_relay_settings.url`; top-level values take precedence over nested settings. Use `transcription_engine`
and `transcription_engine_config` for speech-to-text configuration; the `transcription` object is not supported.'
properties:
conversation_relay_settings:
$ref: '#/components/schemas/ConversationRelaySettings'
url:
type: string
pattern: ^wss?://
description: Public alias for `conversation_relay_url`. Must start with `ws://` or `wss://`. If both are present,
this value wins.
example: wss://example.com/conversation-relay
dtmf_detection:
type: boolean
description: Public alias for `conversation_relay_dtmf_detection`. If both are present, this value wins.
default: false
example: true
conversation_relay_url:
type: string
pattern: ^wss?://
description: WebSocket URL for your Conversation Relay server. Must start with `ws://` or `wss://`.
example: wss://example.com/conversation-relay
conversation_relay_dtmf_detection:
type: boolean
description: Enable DTMF detection for the relay session.
default: false
example: true
voice:
$ref: '#/components/schemas/VoiceConfig'
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/MinimaxVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/InworldVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
minimax: '#/components/schemas/MinimaxVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
inworld: '#/components/schemas/InworldVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
greeting:
type: string
description: Text played when the relay session starts.
example: Hi! Ask me anything!
language:
type: string
description: Default language for the relay session. This value is used for both text-to-speech and speech recognition.
default: en
example: en-US
languages:
type: array
description: Per-language TTS and transcription settings.
items:
$ref: '#/components/schemas/ConversationRelayLanguage'
interruption_settings:
$ref: '#/components/schemas/ConversationRelayInterruptionSettings'
transcription:
type: object
deprecated: true
description: Not supported for Conversation Relay start requests. Use `transcription_engine` and `transcription_engine_config`
instead.
additionalProperties: true
assistant:
$ref: '#/components/schemas/ConversationRelayAssistant'
client_state:
type: string
description: Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
tts_provider:
type: string
description: Text-to-speech provider. If omitted, Telnyx derives it from `voice` or `provider`.
example: telnyx
provider:
type: string
description: Structured voice provider. Must be supplied together with `structured_provider`.
example: elevenlabs
structured_provider:
$ref: '#/components/schemas/ConversationRelayStructuredProvider'
transcription_engine:
description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for
backward compatibility. For Conversation Relay, use this field with `transcription_engine_config`; the `transcription`
object is not supported.
type: string
enum:
- Google
- Telnyx
- Deepgram
- Azure
- xAI
- AssemblyAI
- Speechmatics
- Soniox
- A
- B
default: Google
example: Google
transcription_engine_config:
$ref: '#/components/schemas/ConversationRelayTranscriptionEngineConfig'
interruptible:
$ref: '#/components/schemas/ConversationRelayInterruptible'
interruptible_greeting:
$ref: '#/components/schemas/ConversationRelayInterruptible'
custom_parameters:
type: object
description: Custom key-value parameters forwarded to the relay session as `assistant.dynamic_variables`. If `assistant.dynamic_variables`
is also present, these values are merged in.
additionalProperties: true
example:
customer_id: '12345'
example:
url: wss://example.com/conversation-relay
dtmf_detection: true
interruptible: speech
interruptible_greeting: dtmf
greeting: Hi! Ask me anything!
voice: Telnyx.KokoroTTS.af
tts_provider: telnyx
voice_settings:
type: telnyx
language: en-US
languages:
- language: en-US
tts_provider: telnyx
voice: Telnyx.KokoroTTS.af
transcription_engine: Deepgram
transcription_engine_config:
transcription_model: deepgram/nova-3
custom_parameters:
customer_id: '12345'
allOf:
- if:
not:
anyOf:
- properties:
url:
type: string
required:
- url
- properties:
conversation_relay_url:
type: string
required:
- conversation_relay_url
then:
properties:
conversation_relay_settings:
type: object
required:
- conversation_relay_settings
ConversationRelayStopRequest:
type: object
title: Conversation Relay Stop Request
properties:
client_state:
type: string
description: Use this field to add state to subsequent webhooks. It must be a valid Base-64 encoded string.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
ConversationRelayStructuredProvider:
type: object
title: Conversation Relay Structured Provider
description: Provider-specific structured voice settings. Must be supplied together with `provider`; Telnyx sends the
value as the nested provider configuration for Conversation Relay.
additionalProperties: true
example:
voice_id: voice-id
model_id: Default
ConversationRelayTranscriptionEngineConfig:
type: object
title: Conversation Relay Transcription Engine Config
description: Engine-specific transcription settings for Conversation Relay. This accepts the same provider-specific
options used by the Call Transcription Start command, such as `transcription_model`, without requiring the engine
discriminator to be repeated inside this object. With Deepgram Flux (`deepgram/flux`), `interim_results`, `eot_threshold`
and `eager_eot_threshold` control the interim prompts and the `eagerEndOfTurn` and `turnResumed` frames sent to your
WebSocket server.
properties:
interim_results:
type: boolean
default: false
description: 'Deepgram Flux: send interim transcripts as `prompt` frames with `last: false`.'
eot_threshold:
type: number
minimum: 0.5
maximum: 0.9
default: 0.7
description: 'Deepgram Flux: confidence required to end the caller''s turn.'
eager_eot_threshold:
type: number
minimum: 0.3
maximum: 0.7
description: 'Deepgram Flux: confidence at which an `eagerEndOfTurn` frame is sent before the final prompt, followed
by `turnResumed` if the caller keeps talking. When omitted, these frames are not sent.'
additionalProperties: true
example:
transcription_model: deepgram/flux
interim_results: true
eager_eot_threshold: 0.5
ConversationsListData:
properties:
data:
items:
$ref: '#/components/schemas/Conversation'
type: array
title: Data
type: object
required:
- data
title: ConversationsListData
CostInfo:
type: object
required:
- event_cost
- cumulative_cost
- currency
properties:
event_cost:
type: string
description: Cost of this individual event.
cumulative_cost:
type: string
description: Cumulative cost including all descendants.
currency:
type: string
description: ISO 4217 currency code.
CostInformation:
type: object
properties:
upfront_cost:
type: string
example: '3.21'
monthly_cost:
type: string
example: '6.54'
currency:
type: string
description: The ISO 4217 code for the currency.
example: USD
example:
upfront_cost: '3.21'
monthly_cost: '6.54'
currency: USD
CostSummary:
type: object
required:
- total
- currency
properties:
total:
type: string
description: Total session cost as a decimal string.
currency:
type: string
description: ISO 4217 currency code.
Country:
type: object
title: Country
properties:
code:
type: string
description: ISO 3166-1 Alpha-2 Country Code.
example: US
name:
type: string
description: The name of the country.
example: United States of America
required:
- code
- name
CountryCode:
type: string
description: ISO 3166-1 Alpha-2 Country Code.
example: US
CountryCoverage:
type: object
properties:
code:
type: string
description: Country ISO code
numbers:
type: boolean
features:
type: array
description: Set of features supported
items:
type: string
phone_number_type:
type: array
description: Phone number type
items:
type: string
reservable:
type: boolean
description: Supports reservable
quickship:
type: boolean
description: Supports quickship
international_sms:
type: boolean
p2p:
type: boolean
local:
type: object
properties:
features:
type: array
items:
type: string
reservable:
type: boolean
quickship:
type: boolean
international_sms:
type: boolean
p2p:
type: boolean
full_pstn_replacement:
type: boolean
toll_free:
type: object
properties:
features:
type: array
items:
type: string
reservable:
type: boolean
quickship:
type: boolean
international_sms:
type: boolean
p2p:
type: boolean
full_pstn_replacement:
type: boolean
mobile:
type: object
additionalProperties: true
national:
type: object
additionalProperties: true
inventory_coverage:
type: boolean
description: Indicates whether country can be queried with inventory coverage endpoint
shared_cost:
type: object
additionalProperties: true
region:
type:
- string
- 'null'
description: Geographic region (e.g., AMER, EMEA, APAC)
example:
code: US
numbers: true
features:
- hd_voice
- emergency
- voice
- mms
- fax
- sms
- international_sms
phone_number_type:
- local
- local
- local
- toll_free
reservable: true
quickship: true
international_sms: true
p2p: true
local:
features:
- hd_voice
- voice
- international_sms
- mms
- fax
- sms
- emergency
reservable: true
quickship: false
international_sms: true
p2p: true
full_pstn_replacement: true
toll_free:
features:
- voice
- mms
- fax
- sms
- emergency
reservable: true
quickship: true
international_sms: false
p2p: false
full_pstn_replacement: false
mobile: {}
national: {}
inventory_coverage: true
shared_cost: {}
region: AMER
CreateAiTestMetricRequest:
type: object
properties:
name:
type: string
description:
type: string
type:
type: string
description: 'How the metric is evaluated: custom_code or llm_judge.'
eval_type:
type: string
description: 'What the metric scores: numeric, continuous_qualitative, or binary_workflow_adherence.'
prompt:
type: string
description: Judge prompt used by llm_judge metrics.
enum_values:
type: array
items:
type: string
agents:
type: array
items:
type: integer
assistant_id:
type: string
add_to_new_agents:
type:
- boolean
- 'null'
simulation_enabled:
type: boolean
observability_enabled:
type: boolean
sampling_enabled:
type: boolean
audio_enabled:
type: boolean
display_order:
type: integer
required:
- name
example:
name: Escalates on refund denial
description: Returns a score for whether the assistant escalates when the caller's refund is denied.
type: llm_judge
eval_type: continuous_qualitative
prompt: Score the assistant's escalation behaviour between 0.0 and 1.0.
agents:
- 1259
add_to_new_agents: false
simulation_enabled: true
observability_enabled: true
CreateAlphanumericSenderIdRequest:
type: object
required:
- alphanumeric_sender_id
- messaging_profile_id
properties:
alphanumeric_sender_id:
type: string
description: The alphanumeric sender ID string.
example: MyCompany
messaging_profile_id:
type: string
format: uuid
description: The messaging profile to associate the sender ID with.
us_long_code_fallback:
type: string
description: A US long code number to use as fallback when sending to US destinations.
example: '+15551234567'
CreateAndroidPushCredentialRequest:
type: object
title: Create Android Push Credential Request
required:
- type
- project_account_json_file
- alias
properties:
type:
description: Type of mobile push credential. Should be android here
type: string
enum:
- android
project_account_json_file:
description: Private key file in JSON format
type: object
example:
private_key: BBBB0J56jd8kda:APA91vjb11BCjvxx3Jxja...
client_email: account@customer.org
additionalProperties: true
alias:
description: Alias to uniquely identify the credential
type: string
example: LucyAndroidCredential
CreateAssistantRequest:
properties:
name:
type: string
model:
type: string
description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible)
to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field.
If neither `model` nor `external_llm` is provided, Telnyx applies the default model.
instructions:
type: string
description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
tools:
$ref: '#/components/schemas/AssistantTools'
description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids`
to attach shared tools created with the AI Tools endpoints.
mcp_servers:
type: array
items:
$ref: '#/components/schemas/AssistantMCPServer'
default: []
description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them
by `id` here.
a2a_agents:
type: array
items:
$ref: '#/components/schemas/AssistantA2AAgent'
default: []
description: 'A2A agents this assistant can delegate to. Tools are not stored here: at the start of every conversation
each agent''s card is fetched and one tool is derived per skill the card advertises, named `a2a__`.
The following limits are not enforced when the assistant is saved, and anything past them is dropped when the
conversation starts: 64 agents per assistant, 64 skills per card, 128 derived tools per assistant, and a 6 second
budget for all card fetches combined. An agent whose card cannot be fetched costs the assistant that capability
for the conversation; it does not fail the call.'
tool_ids:
title: Ids of shared tools
items:
type: string
type: array
description: IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline
`tools`.
description:
type: string
greeting:
type: string
description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
Use an empty string to have the assistant wait for the user to speak first. Use the special value ``
to have the assistant generate the greeting based on the system instructions.
llm_api_key_ref:
type: string
description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier`
for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref`
instead. Warning: Free plans are unlikely to work with this integration.'
external_llm:
$ref: '#/components/schemas/ExternalLLMReq'
fallback_config:
$ref: '#/components/schemas/FallbackConfigReq'
voice_settings:
$ref: '#/components/schemas/inference-embedding_VoiceSettings'
avatar_settings:
anyOf:
- $ref: '#/components/schemas/AvatarSettingsRequest'
- type: 'null'
description: '**Beta:** Optional avatar configuration for supported realtime browser conversations. Omit or set
to `null` to create the assistant without an avatar.'
transcription:
$ref: '#/components/schemas/TranscriptionSettings'
telephony_settings:
$ref: '#/components/schemas/TelephonySettings'
messaging_settings:
$ref: '#/components/schemas/MessagingSettings'
enabled_features:
items:
$ref: '#/components/schemas/EnabledFeatures'
type: array
insight_settings:
$ref: '#/components/schemas/InsightSettings'
privacy_settings:
$ref: '#/components/schemas/PrivacySettings'
dynamic_variables_webhook_url:
type: string
description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of
the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level
`dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will
be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
for the full request/response format and timeout behavior.'
dynamic_variables_webhook_timeout_ms:
type: integer
minimum: 1
maximum: 10000
default: 1500
description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook
does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
dynamic_variables:
type: object
description: Map of dynamic variables and their default values
additionalProperties: true
widget_settings:
$ref: '#/components/schemas/WidgetSettings'
interruption_settings:
$ref: '#/components/schemas/inference-embedding_InterruptionSettings'
integrations:
type: array
items:
$ref: '#/components/schemas/AssistantIntegration'
default: []
description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`;
the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration
by `integration_id`.
observability_settings:
$ref: '#/components/schemas/ObservabilityReq'
tags:
type: array
items:
type: string
default: []
description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.
post_conversation_settings:
$ref: '#/components/schemas/PostConversationSettingsReq'
delegation_settings:
$ref: '#/components/schemas/DelegationSettings'
websocket_settings:
$ref: '#/components/schemas/WebsocketSettings'
conversation_flow:
$ref: '#/components/schemas/ConversationFlowReq'
type: object
required:
- name
- instructions
title: CreateAssistantRequest
CreateAssistantTestRequest:
properties:
name:
type: string
maxLength: 255
minLength: 1
title: Name
description: A descriptive name for the assistant test. This will be used to identify the test in the UI and reports.
example: Customer Support Bot Test
description:
type: string
maxLength: 1000
title: Description
description: Optional detailed description of what this test evaluates and its purpose. Helps team members understand
the test's objectives.
telnyx_conversation_channel:
allOf:
- $ref: '#/components/schemas/TelnyxConversationChannel'
description: The communication channel through which the test will be conducted. Determines how the assistant will
receive and respond to test messages.
default: web_chat
example: web_chat
destination:
type: string
minLength: 1
title: Destination
description: 'The target destination for the test conversation. Format depends on the channel: phone number for
SMS/voice, webhook URL for web chat, etc.'
example: '+15551234567'
max_duration_seconds:
type: integer
maximum: 3600.0
minimum: 1.0
title: Max Duration Seconds
description: Maximum duration in seconds that the test conversation should run before timing out. If not specified,
uses system default timeout.
test_suite:
type: string
maxLength: 100
title: Test Suite
description: Optional test suite name to group related tests together. Useful for organizing tests by feature, team,
or release cycle.
instructions:
type: string
maxLength: 5000
minLength: 1
title: Instructions
description: Detailed instructions that define the test scenario and what the assistant should accomplish. This
guides the test execution and evaluation.
example: Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied
with the initial response.
rubric:
items:
type: object
required:
- name
- criteria
properties:
name:
type: string
description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity.
criteria:
type: string
description: Specific guidance on how to assess the assistant’s performance for this rubric item.
additionalProperties: false
type: array
minItems: 1
title: Rubric
description: Evaluation criteria used to assess the assistant's performance. Each rubric item contains a name and
specific criteria for evaluation.
example:
- criteria: Assistant responds within 30 seconds
name: Response Time
- criteria: Provides correct product information
name: Accuracy
type: object
required:
- name
- destination
- instructions
- rubric
title: CreateAssistantTestRequest
description: 'Request model for creating a new assistant test.
This model defines all the required and optional parameters needed to create
a comprehensive test for an AI assistant, including test configuration,
evaluation criteria, and scheduling options.'
CreateAvatarRequest:
type: object
additionalProperties: false
required:
- image_file
- name
properties:
image_file:
type: string
format: binary
description: JPEG, PNG, or WebP image file. The maximum file size is 10 MiB.
name:
type: string
minLength: 1
maxLength: 255
description: Customer-facing name of the custom avatar.
example: Customer portrait
CreateBrand:
title: CreateBrand
required:
- entityType
- displayName
- country
- email
- vertical
type: object
properties:
entityType:
allOf:
- $ref: '#/components/schemas/EntityType'
description: Entity type behind the brand. This is the form of business establishment.
displayName:
title: Displayname
maxLength: 100
type: string
description: Display name, marketing name, or DBA name of the brand.
example: ABC Mobile
companyName:
title: Companyname
maxLength: 100
type: string
description: (Required for Non-profit/private/public) Legal company name.
example: ABC Inc.
firstName:
title: Firstname
maxLength: 100
type: string
description: First name of business contact.
example: John
lastName:
title: Lastname
maxLength: 100
type: string
description: Last name of business contact.
example: Smith
ein:
title: Ein
maxLength: 20
type: string
description: (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.
example: '111111111'
phone:
title: Phone
maxLength: 20
type: string
description: Valid phone number in e.164 international format.
example: '+12024567890'
street:
title: Street
maxLength: 100
type: string
description: Street number and name.
example: '123'
city:
title: City
maxLength: 100
type: string
description: City name
example: New York
state:
title: State
maxLength: 20
type: string
description: State. Must be 2 letters code for United States.
example: NY
postalCode:
title: Postalcode
maxLength: 10
type: string
description: Postal codes. Use 5 digit zipcode for United States
example: '10001'
country:
title: Country
maxLength: 2
type: string
description: 'ISO2 2 characters country code. Example: US - United States'
example: US
email:
title: Email
maxLength: 100
type: string
description: Valid email address of brand support contact.
stockSymbol:
title: Stocksymbol
maxLength: 10
type: string
description: (Required for public company) stock symbol.
example: ABC
stockExchange:
allOf:
- $ref: '#/components/schemas/StockExchange'
description: (Required for public company) stock exchange.
example: NASDAQ
ipAddress:
title: Ipaddress
maxLength: 50
type: string
description: IP address of the browser requesting to create brand identity.
website:
title: Website
maxLength: 100
type: string
description: Brand website URL.
example: http://www.abcmobile.com
vertical:
allOf:
- $ref: '#/components/schemas/Vertical'
description: Vertical or industry segment of the brand.
isReseller:
title: Isreseller
type: boolean
default: false
mock:
title: Mock
type: boolean
description: Mock brand for testing purposes. Defaults to false.
default: false
mobilePhone:
title: Mobilephone
maxLength: 20
type: string
description: Valid mobile phone number in e.164 international format.
example: '+12024567890'
businessContactEmail:
title: BusinessContactEmail
type: string
description: 'Business contact email.
Required if `entityType` is `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this field or set it
to `null`.'
example: name@example.com
webhookURL:
title: WebhookURL
type: string
description: Webhook URL for brand status updates.
example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Webhook failover URL for brand status updates.
example: https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6
CreateCallControlApplicationRequest:
type: object
title: Create Call Control Application Request
required:
- application_name
- webhook_event_url
properties:
application_name:
type: string
description: A user-assigned name to help manage the application.
example: call-router
webhook_event_url:
type: string
format: url
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
active:
type: boolean
description: Specifies whether the connection can be used.
default: true
anchorsite_override:
type: string
description: 'Latency directs Telnyx to route media through the site with the lowest round-trip time
to the user''s connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying
a site to handle all media.
'
enum:
- Latency
- Chicago, IL
- Ashburn, VA
- San Jose, CA
- London, UK
- Chennai, IN
- Amsterdam, Netherlands
- Toronto, Canada
- Sydney, Australia
example: Amsterdam, Netherlands
default: Latency
dtmf_type:
type: string
description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx
will be accepted in all formats.
enum:
- RFC 2833
- Inband
- SIP INFO
example: Inband
default: RFC 2833
first_command_timeout:
type: boolean
description: Specifies whether calls to phone numbers associated with this connection should hangup after timing
out.
example: true
default: false
first_command_timeout_secs:
type: integer
description: Specifies how many seconds to wait before timing out a dial command.
example: 10
default: 30
inbound:
$ref: '#/components/schemas/CallControlApplicationInbound'
outbound:
$ref: '#/components/schemas/CallControlApplicationOutbound'
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_event_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this Call Control Application.
default: false
redact_dtmf_debug_logging:
type: boolean
description: When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered
through IVR interactions.
example: true
default: false
example:
application_name: call-router
webhook_event_url: https://example.com
active: false
anchorsite_override: Latency
dtmf_type: Inband
first_command_timeout: true
first_command_timeout_secs: 10
inbound:
channel_limit: 10
shaken_stir_enabled: true
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
webhook_api_version: '1'
webhook_event_failover_url: https://failover.example.com
webhook_timeout_secs: 25
call_cost_in_webhooks: true
redact_dtmf_debug_logging: true
CreateCloudfsFilesystemRequest:
type: object
properties:
name:
type: string
description: Filesystem name, unique within your organization. Names are trimmed and lowercased; after normalization
they may contain lowercase letters, numbers, `.`, `_`, and `-` only.
pattern: ^[a-z0-9._-]+$
minLength: 1
maxLength: 63
example: agent-fs
region:
type: string
description: Region where the filesystem's storage and metadata are provisioned.
enum:
- us-central-1
- us-east-1
- us-west-1
example: us-east-1
required:
- name
- region
CreateCollectionRequest:
type: object
required:
- name
properties:
name:
type: string
description: Human-readable collection name.
example: Support Transcripts
description:
type: string
description: Optional description.
example: All customer support voice transcripts.
slug:
type: string
description: Optional slug (unique per organization). Derived from `name` when omitted.
example: support-transcripts
sources:
type: array
description: Optional sources to attach at creation time.
items:
$ref: '#/components/schemas/SourceRequest'
settings:
description: Optional retrieval settings.
allOf:
- $ref: '#/components/schemas/RetrievalSettingsWrapper'
CreateConferenceRequest:
required:
- call_control_id
- name
type: object
title: Create Conference Request
properties:
call_control_id:
description: Unique identifier and token for controlling the call
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==
type: string
name:
description: Name of the conference
example: Business
type: string
beep_enabled:
description: Whether a beep sound should be played when participants join and/or leave the conference.
enum:
- always
- never
- on_enter
- on_exit
default: never
example: on_exit
type: string
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
The client_state will be updated for the creator call leg and will be used for all webhooks related to the created
conference.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
type: string
comfort_noise:
description: Toggle background comfort noise.
example: false
type: boolean
default: true
command_id:
description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with
the same `command_id` as one that has already been executed.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
type: string
duration_minutes:
description: Time length (minutes) after which the conference will end.
example: 5
type: integer
hold_audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played to participants joining the conference. The URL can point to either
a WAV or MP3 file. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only
when "start_conference_on_create" is set to "false".
hold_media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played to participants joining the conference. The media_name must point
to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be
a WAV or MP3 file. Takes effect only when "start_conference_on_create" is set to "false".
max_participants:
description: The maximum number of active conference participants to allow. Must be between 2 and 800. Defaults
to 250
example: 3
type: integer
start_conference_on_create:
description: Whether the conference should be started on creation. If the conference isn't started all participants
that join are automatically put on hold. Defaults to "true".
example: false
type: boolean
region:
description: Sets the region where the conference data will be hosted. Defaults to the region defined in user's
data locality settings (Europe or US).
example: US
type: string
enum:
- Australia
- Europe
- Middle East
- US
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
name: Business
beep_enabled: always
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
duration_minutes: 5
hold_audio_url: http://www.example.com/audio.wav
start_conference_on_create: false
max_participants: 250
CreateConversationRequest:
properties:
name:
type: string
metadata:
type: object
description: Metadata associated with the conversation. Set `ai_disabled` to `true` to create the conversation with
AI message responses disabled.
additionalProperties:
type: string
type: object
title: CreateConversationRequest
CreateCredentialConnectionRequest:
type: object
title: Create Credential Connection Request
required:
- user_name
- password
- connection_name
properties:
active:
type: boolean
description: Defaults to true
user_name:
type: string
description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric
values only (no spaces or special characters).
example: myusername123
password:
type: string
description: The password to be used as part of the credentials. Must be 8 to 128 characters long.
example: my123secure456password789
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
sip_uri_calling_preference:
type: string
description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted)
then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also
choose to allow only calls that are originated on any Connections under your account (internal).
enum:
- disabled
- unrestricted
- internal
default_on_hold_comfort_noise_enabled:
type: boolean
default: false
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be
set when the outbound object parameter call_parking_enabled is included and set to true.
enum:
- '1'
- '2'
- texml
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/CredentialInbound'
outbound:
$ref: '#/components/schemas/CredentialOutbound'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
active: true
password: my123secure456password789
user_name: myusername123
anchorsite_override: Latency
connection_name: my name
sip_uri_calling_preference: disabled
default_on_hold_comfort_noise_enabled: false
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: disabled
outbound:
call_parking_enabled: true
ani_override: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: US
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
CreateDocServiceDocumentRequest:
type: object
properties:
url:
description: If the file is already hosted publicly, you can provide a URL and have the documents service fetch
it for you.
type: string
example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
file:
description: Alternatively, instead of the URL you can provide the Base64 encoded contents of the file you are uploading.
type: string
format: byte
example: ZXhhbXBsZSBvZiBlbmNvZGVkIGNvbnRlbnQ=
filename:
description: The filename of the document.
type: string
example: test-document.pdf
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
CreateEmailBatchItemRequest:
type: object
description: 'A single message in a batch create request. This schema mirrors
`CreateEmailRequest` EXCEPT it does not accept the reply/forward
threading parameters (`in_reply_to_message_id`, `reply_to_all`,
`forward_of_message_id`) — those are single-send-only in Phase 1
(MSG-1491) and are not yet implemented on the batch endpoint. Recipient
email addresses must be unique across `to`, `cc`, and `bcc` after
case-insensitive normalization. Duplicate recipients return `400`.'
properties:
from:
$ref: '#/components/schemas/EmailAddressInput'
from_name:
type: string
description: Optional display name for string `from`; overrides `from.name` when provided.
to:
$ref: '#/components/schemas/EmailAddressArrayInput'
cc:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
bcc:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
reply_to:
$ref: '#/components/schemas/EmailAddressInput'
description: Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored.
subject:
type: string
description: Required unless `template_id` is supplied. When using a template, the template's subject is rendered;
if the template has no subject or renders empty, the request returns 400.
html_body:
type: string
description: HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses.
text_body:
type: string
description: Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses.
headers:
type: object
additionalProperties:
type: string
description: Custom email headers. Write-only; not returned in responses.
attachments:
type: array
items:
$ref: '#/components/schemas/AttachmentRequest'
tags:
type: array
items:
type: string
description: Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated
to Email Detail Records. Usable in `filter[tags]` when listing messages.
group_id:
type: string
format: uuid
nullable: true
description: Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling.
ignore_suppression:
type: boolean
default: false
description: 'When true, allows delivery to recipients whose suppressions explicitly
permit an override. Hard bounces, spam complaints, and invalid-address
suppressions cannot be overridden. Requires the `email:override` API scope.
'
metadata:
type: object
additionalProperties: true
description: Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated
to Email Detail Records. Usable in `filter[metadata]` when listing messages.
tracking_settings:
$ref: '#/components/schemas/TrackingSettings'
template_id:
type: string
format: uuid
template_variables:
type: object
default: {}
additionalProperties: true
description: Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message
creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`,
a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error
(batch) naming the variable; no message is persisted for the failed item.
scheduled_at:
type: string
format: date-time
nullable: true
description: Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP
422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at`
remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at`
is omitted or null, `send_at` is used.
send_at:
type: string
format: date-time
deprecated: true
description: Deprecated alias for `scheduled_at`.
inline_css:
type: boolean
default: false
sandbox_mode:
type: boolean
default: false
description: 'Per-message sandbox flag. The batch-level `sandbox_mode` envelope value is authoritative: it overwrites
every message''s `sandbox_mode` before processing, including the `false` default when the envelope omits the field.
A per-item `sandbox_mode: true` inside a non-sandbox batch is therefore a real send. Set the envelope field to
run any batch item in sandbox mode.'
required:
- from
- to
CreateEmailBatchRequest:
type: object
properties:
messages:
type: array
minItems: 1
maxItems: 1000
description: Array of email messages to send. Up to 1,000 messages per batch request. Each message is validated
and sent independently; per-message failures do not affect other messages in the batch.
items:
$ref: '#/components/schemas/CreateEmailBatchItemRequest'
sandbox_mode:
type: boolean
default: false
description: Applies sandbox mode to all messages in the batch and overrides any per-message `sandbox_mode` value
— each message's effective `sandbox_mode` is exactly this envelope value. Reserved recipients at `test.telnyx.com`
produce the deterministic event chains documented on CreateEmailRequest.sandbox_mode; no batch item is injected
into the MTA or outbound Kafka path. Sandbox batch items are non-billable, consume no daily-send-limit quota,
and feed no delivery-reputation signals.
required:
- messages
CreateEmailBlockRequest:
type: object
required:
- to
properties:
to:
type: string
description: 'Recipient address (normalized: trim + lower-case).'
from:
type: string
nullable: true
description: Sender address (normalized). `null` ⇒ account/domain scope.
domain_id:
type: string
format: uuid
nullable: true
description: '`null` ⇒ account scope.'
expires_at:
type: string
format: date-time
nullable: true
description: '`reason`/`source` are forced to `manual_block`/`manual` (ignored if
supplied). `scope` is derived. `bounce_category`/`dsn_code`/`meta`/
`group_id` are not accepted on the public surface.
'
CreateEmailDomainRequest:
type: object
required:
- domain
properties:
domain:
type: string
example: example.com
inbound_enabled:
type: boolean
default: false
description: Enable inbound routing for this domain
dmarc_policy:
type: object
allOf:
- $ref: '#/components/schemas/EmailDMARCPolicy'
nullable: true
description: 'DMARC policy. Omit/null for the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).
'
tracking:
$ref: '#/components/schemas/DomainsTrackingSettings'
CreateEmailInboxRequest:
type: object
description: Both fields are optional. Omitting `username` generates one; omitting `domain_id` uses the account's shared
inbound subdomain. Omitting both creates an instant inbox with a generated username.
properties:
username:
type: string
description: Inbox local part. Trimmed and lowercased before validation; the normalized value must be 1-64 characters,
start and end with a letter or digit, and contain only letters, digits, dots, hyphens, and underscores. Generated
when omitted.
domain_id:
type: string
format: uuid
description: Account-owned, inbound-enabled domain UUID. The account's shared inbound subdomain is allocated when
omitted.
CreateEmailRequest:
type: object
description: Recipient email addresses must be unique across `to`, `cc`, and `bcc` after case-insensitive normalization.
Duplicate recipients return `400 Bad Request`.
properties:
from:
$ref: '#/components/schemas/EmailAddressInput'
from_name:
type: string
description: Optional display name for string `from`; overrides `from.name` when provided.
to:
$ref: '#/components/schemas/EmailAddressArrayInput'
cc:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
bcc:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
reply_to:
$ref: '#/components/schemas/EmailAddressInput'
description: Reply-to address. If provided as an object with a name, only the email is stored; the name is ignored.
subject:
type: string
description: Required unless `template_id` is supplied. When using a template, the template's subject is rendered;
if the template has no subject or renders empty, the request returns 400.
html_body:
type: string
description: HTML email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses.
text_body:
type: string
description: Plain text email body. Returned only by `GET /email_messages/{id}`; omitted from create and list responses.
headers:
type: object
additionalProperties:
type: string
description: Custom email headers. Write-only; not returned in responses.
attachments:
type: array
items:
$ref: '#/components/schemas/AttachmentRequest'
tags:
type: array
items:
type: string
description: Tags for categorization and filtering. Stored on the message, returned on message responses, and propagated
to Email Detail Records. Usable in `filter[tags]` when listing messages.
group_id:
type: string
format: uuid
nullable: true
description: Optional unsubscribe-group UUID used for group-scoped suppression checks and unsubscribe handling.
ignore_suppression:
type: boolean
default: false
description: 'When true, allows delivery to recipients whose suppressions explicitly
permit an override. Hard bounces, spam complaints, and invalid-address
suppressions cannot be overridden. Requires the `email:override` API scope.
'
metadata:
type: object
additionalProperties: true
description: Custom metadata key/value pairs. Stored on the message, returned on message responses, and propagated
to Email Detail Records. Usable in `filter[metadata]` when listing messages.
tracking_settings:
$ref: '#/components/schemas/TrackingSettings'
template_id:
type: string
format: uuid
template_variables:
type: object
default: {}
additionalProperties: true
description: Variables for Liquid template rendering. Non-object values may cause a 422 validation error on message
creation, but are silently treated as an empty object for template rendering. When the template enables `strict_variables`,
a missing required variable fails the request with 422 (single send) or a per-item `unprocessable_entity` error
(batch) naming the variable; no message is persisted for the failed item.
scheduled_at:
type: string
format: date-time
nullable: true
description: Future ISO 8601 delivery time. Invalid or non-future timestamps are rejected. Single sends return HTTP
422; in batch sends the invalid item is reported in the 207 per-item errors while other items continue. `send_at`
remains a deprecated request alias. A non-null `scheduled_at` takes precedence over `send_at`; when `scheduled_at`
is omitted or null, `send_at` is used.
send_at:
type: string
format: date-time
deprecated: true
description: Deprecated alias for `scheduled_at`.
inline_css:
type: boolean
default: false
sandbox_mode:
type: boolean
default: false
description: 'Validates and accepts the message without injecting it into the MTA or outbound Kafka path. Nothing
is delivered: sandbox records are non-billable, consume no daily-send-limit quota, and feed no delivery-reputation
signals.
The reserved sandbox test-recipient domain is `test.telnyx.com`. In sandbox mode, these addresses produce deterministic
recipient-scoped lifecycle events:
- `delivered@test.telnyx.com`: queued -> sending -> sent -> delivered
- `hard-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (permanent)
- `soft-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (transient)
- `complaint@test.telnyx.com`: queued -> sending -> sent -> complained
- `suppressed@test.telnyx.com`: queued -> suppressed
- `invalid@test.telnyx.com`: queued -> sending -> failed (invalid recipient)
- `dkim-fail@test.telnyx.com`: queued -> sending -> failed (DKIM unavailable)
- `rate-limit@test.telnyx.com`: queued -> sending -> failed (rate limit exceeded)
Matching is case-insensitive for both the local part and the domain and requires the exact domain `test.telnyx.com`
— subdomains and other domains do not match. Mixed sandbox sends simulate only reserved test recipients; other
recipients retain ordinary sandbox behavior (accepted, no delivery attempted). Hard-bounce and complaint outcomes
also use the normal automatic-suppression pipeline. Non-sandbox sends to these addresses use the normal delivery
path.'
in_reply_to_message_id:
type: string
format: uuid
nullable: true
description: 'Telnyx message UUID of the message this send replies to. When provided,
the API sets RFC 5322 `In-Reply-To` and `References` headers on the
outbound MIME so the recipient''s mailbox (Gmail/Outlook) threads it
correctly. The parent is looked up under the caller''s account scope;
a UUID belonging to another account yields a non-enumerating 404.
Wire-only (Phase 1): the API sets the headers and does NOT resolve or
mutate `thread_id` on the server side. Messages sent without this
parameter are standalone (no threading headers injected).
Cannot be combined with `forward_of_message_id` (422).'
reply_to_all:
type: boolean
default: false
nullable: true
description: 'Indicates a reply-all intent. In Phase 1 (wire-only) this does not
change the threading headers — recipient selection is customer-
controlled (`to`/`cc`), and a thread is not defined by its audience.
When the referenced message has no thread context, reply-all
degrades to a plain reply (parent ID only in `References`). The
resolution engine (separate work) will expand the ancestor chain
at a later phase with no API change.
Only meaningful alongside `in_reply_to_message_id`.'
forward_of_message_id:
type: string
format: uuid
nullable: true
description: 'Telnyx message UUID of the message this send forwards. Forwarded
messages start a NEW thread per RFC 5322 — NO `In-Reply-To` or
`References` headers are set on the outbound MIME. The id is
recorded in the message''s metadata for EDR provenance only.
The id is validated as a UUID but is NOT looked up against the
message store — existence is the caller''s responsibility (the
forward is pure metadata; it does not affect delivery). Cannot be
combined with `in_reply_to_message_id` (422).'
required:
- from
- to
CreateEmailTemplateRequest:
type: object
properties:
name:
type: string
pattern: ^[A-Za-z0-9 _-]+$
description: Letters, numbers, spaces, hyphens, and underscores only.
maxLength: 255
subject:
type: string
nullable: true
description: Liquid template subject.
maxLength: 255
html_body:
type: string
nullable: true
description: Liquid template HTML body.
text_body:
type: string
nullable: true
description: Liquid template text body.
variables:
type: array
description: Persisted variable names. In `automatic` mode a non-null array is rejected; in `explicit` mode this
is the exact manual array and each item is limited to 255 Unicode code points.
items:
type: string
maxLength: 255
nullable: true
variables_mode:
type: string
enum:
- automatic
- explicit
description: Controls how `variables` is maintained. If both fields are omitted (or `variables` is null), the template
uses `automatic` mode and extracts variable names from the effective subject, HTML body, and text body. A non-null
`variables` array with no mode selects `explicit`. `automatic` rejects a simultaneous non-null array; `explicit`
requires a non-null array, including valid `[]`, and preserves its exact order, duplicates, and string contents.
strict_variables:
type: boolean
default: false
description: 'Per-template strict variable-validation setting. Defaults to `false` for backward compatibility. When
`true`, a send or render that is missing a variable marked `required: true` in `variable_schema` fails with 422
naming the variable. Missing optional variables never fail; their schema `default` (when set) is applied to the
render.'
autoescape:
type: boolean
default: false
description: 'Per-template HTML autoescaping setting. Defaults to `false` for backward compatibility. When `true`,
the rendered `html_body` HTML-escapes each Liquid expression''s output at the output boundary (after its filters
run, before concatenation with literal template markup). Input values are never mutated and `subject`/`text_body`
are never autoescaped. The boundary escape is idempotent: HTML entities already present in the output (e.g. from
an explicit `escape` filter) are preserved, so an explicit `escape`/`escape_once` is never double-escaped, and
markup introduced by any later filter in the chain is still escaped.'
variable_schema:
type: object
nullable: true
description: 'Structured variable requirements. Required variables cannot define defaults; invalid combinations
return 422. This is independent of the legacy `variables` array. On render with `strict_variables` enabled: `required`
variables must be supplied as non-empty values — absent, `null`, empty string, empty object `{}`, and empty array
`[]` all fail with 422 naming the variable, while present values such as `false` and `0` pass (they are present,
not empty). Optional variables fall back to their `default` when absent.'
additionalProperties:
$ref: '#/components/schemas/VariableSchemaEntry'
required:
- name
CreateEmailValidationBatchRequest:
type: object
properties:
emails:
type: array
minItems: 1
maxItems: 1000
items:
type: string
description: Email address to validate. Any string is accepted; validation results indicate whether the address
is valid. Blank strings are discarded and counted in duplicates_removed; if all entries are blank, returns 400.
webhook_url:
type: string
format: uri
maxLength: 2048
pattern: ^https?://
description: URL for batch completion webhook. Empty string is treated as omitted. SSRF-protected; private/reserved
IPs and internal hostnames are rejected.
required:
- emails
CreateEmailValidationRequest:
type: object
properties:
email:
type: string
description: Email address to validate. Any non-empty string is accepted; invalid syntax returns valid=false rather
than a request error.
required:
- email
CreateEmailWebhookRequest:
type: object
required:
- url
- events
properties:
url:
type: string
format: uri
description: HTTPS endpoint to deliver subscribed events to.
events:
type: array
minItems: 1
items:
$ref: '#/components/schemas/EmailWebhookEvent'
description: At least one event type is required.
CreateEvaluatorScenarioRequest:
type: object
properties:
name:
type: string
agent:
type:
- integer
- 'null'
personality:
type: integer
description: ID of the personality the caller simulates.
instructions:
type: string
expected_outcome_prompt:
type: string
metrics:
type: array
items:
type: integer
tags:
type: array
items:
type: string
first_message:
type: string
test_profile:
type: integer
folder_path:
type:
- string
- 'null'
required:
- name
- personality
example:
name: Refund escalation flow
agent: 1259
personality: 4643
instructions: Call the support line and demand a refund for a damaged product.
expected_outcome_prompt: The assistant explains the refund policy and offers escalation.
metrics:
- 266881
tags:
- support
first_message: Hi, I want a refund.
CreateEventRequest:
properties:
type:
$ref: '#/components/schemas/EventType'
summary:
type: string
title: Summary
step_id:
title: Step Id
type: string
agent_id:
title: Agent Id
type: string
payload:
title: Payload
additionalProperties: true
type: object
idempotency_key:
title: Idempotency Key
description: Prevents duplicate events on retry
type: string
type: object
required:
- type
- summary
title: CreateEventRequest
CreateExternalConnectionRequest:
type: object
title: Create External Connection Request
required:
- external_sip_connection
- outbound
properties:
active:
$ref: '#/components/schemas/ConnectionActive'
external_sip_connection:
$ref: '#/components/schemas/ExternalSipConnectionZoomOnly'
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
inbound:
type: object
properties:
outbound_voice_profile_id:
type: string
description: The ID of the outbound voice profile to use for inbound calls.
example: 12345678-1234-1234-1234-123456789012
channel_limit:
type: integer
description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with
this connection.
default: null
example: 10
required:
- outbound_voice_profile_id
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/external-voice-integrations_OutboundVoiceProfileId'
example:
external_sip_connection: zoom
active: false
outbound:
outbound_voice_profile_id: '1911630617284445511'
CreateExternalConnectionUploadRequest:
type: object
title: Create Upload Request
required:
- number_ids
properties:
number_ids:
type: array
items:
type: string
description: Phone number ID from the Telnyx API.
minItems: 1
usage:
type: string
enum:
- calling_user_assignment
- first_party_app_assignment
description: 'The use case of the upload request. NOTE: `calling_user_assignment` is not supported for toll free
numbers.'
additional_usages:
type: array
items:
type: string
enum:
- calling_user_assignment
- first_party_app_assignment
description: Additional use cases of the upload request. If not provided, all supported usages will be used.
location_id:
type: string
format: uuid
description: Identifies the location to assign all phone numbers to.
civic_address_id:
type: string
format: uuid
description: Identifies the civic address to assign all phone numbers to.
example:
number_ids:
- '3920457616934164700'
- '3920457616934164701'
- '3920457616934164702'
- '3920457616934164703'
usage: first_party_app_assignment
location_id: 67ea7693-9cd5-4a68-8c76-abb3aa5bf5d2
CreateFaxApplicationRequest:
type: object
title: Create Fax Application Request
required:
- application_name
- webhook_event_url
properties:
application_name:
$ref: '#/components/schemas/ApplicationName'
active:
$ref: '#/components/schemas/ConnectionActive'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
webhook_event_url:
$ref: '#/components/schemas/WebhookEventUrl'
webhook_event_failover_url:
$ref: '#/components/schemas/WebhookEventFailoverUrl'
webhook_timeout_secs:
$ref: '#/components/schemas/WebhookTimeoutSecs'
tags:
type: array
items:
type: string
description: Tags associated with the Fax Application.
example:
- tag1
- tag2
default: []
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with
this connection.
default: null
example: 10
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way
a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called
from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
default: null
example: example
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
example: only_my_connections
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/OutboundVoiceProfileId'
example:
application_name: fax-router
active: false
anchorsite_override: Amsterdam, Netherlands
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_timeout_secs: 25
tags:
- tag1
- tag2
inbound:
channel_limit: 10
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
CreateFineTuningJobRequest:
properties:
model:
type: string
description: The base model that is being fine-tuned.
training_file:
type: string
description: The storage bucket or object used for training.
suffix:
type: string
description: Optional suffix to append to the fine tuned model's name.
hyperparameters:
type: object
description: The hyperparameters used for the fine-tuning job.
properties:
n_epochs:
type: integer
minimum: 1
maximum: 10
default: 3
description: The number of epochs to train the model for. An epoch refers to one full cycle through the training
dataset. 'auto' decides the optimal number of epochs based on the size of the dataset. If setting the number
manually, we support any number between 1 and 50 epochs.
type: object
required:
- model
- training_file
title: CreateFineTuningJobRequest
CreateFqdnConnectionRequest:
title: Create FQDN Connection Request
required:
- connection_name
properties:
active:
type: boolean
description: Defaults to true
default: true
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
transport_protocol:
$ref: '#/components/schemas/FqdnConnectionTransportProtocol'
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
microsoft_teams_sbc:
type: boolean
description: When enabled, the connection will be created for Microsoft Teams Direct Routing. A *.mstsbc.telnyx.tech
FQDN will be created for the connection automatically.
default: false
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
$ref: '#/components/schemas/WebhookEventUrl'
webhook_event_failover_url:
$ref: '#/components/schemas/WebhookEventFailoverUrl'
webhook_api_version:
$ref: '#/components/schemas/WebhookApiVersion'
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
webhook_timeout_secs:
$ref: '#/components/schemas/WebhookTimeoutSecs'
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/InboundFqdn'
outbound:
$ref: '#/components/schemas/OutboundFqdn'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
active: true
anchorsite_override: Latency
connection_name: string
transport_protocol: TLS
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: string
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 10
shaken_stir_enabled: true
outbound:
ani_override: '+1234567890'
ani_override_type: always
call_parking_enabled: true
channel_limit: 10
generate_ringback_tone: true
instant_ringback_enabled: true
ip_authentication_method: credential-authentication
ip_authentication_token: aBcD1234
localization: string
outbound_voice_profile_id: '1293384261075731499'
t38_reinvite_source: customer
tech_prefix: '0123'
encrypted_media: SRTP
timeout_1xx_secs: 10
timeout_2xx_secs: 10
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
type: object
CreateFqdnRequest:
title: Create Fqdn Request
type: object
required:
- fqdn
- dns_record_type
- connection_id
properties:
connection_id:
type: string
description: ID of the FQDN connection to which this IP should be attached.
fqdn:
type: string
description: FQDN represented by this resource.
example: example.com
port:
type:
- integer
- 'null'
description: Port to use when connecting to this FQDN.
default: 5060
example: 5060
dns_record_type:
type: string
description: The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'.
For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not
specified, 5060 will be used.
example: a
example:
connection_id: '1516447646313612565'
fqdn: example.com
port: 8080
dns_record_type: a
CreateGenericPayConnectorRequest:
type: object
required:
- name
- config
properties:
name:
type: string
description: Unique within the authenticated organization. Used in resource paths and as connector_name in the Call
Control Pay request. Cannot be renamed by update.
minLength: 1
maxLength: 255
pattern: \S
example: my-payment-connector
type:
type: string
description: Connector type covered by this reference.
enum:
- generic
default: generic
mode:
type: string
description: Defaults to test on creation. Test restricts collected card numbers but still contacts the configured
processor; use a processor sandbox URL and sandbox credentials. Live removes the test-card restriction. Neither
mode locks API updates.
enum:
- test
- live
default: test
config:
$ref: '#/components/schemas/GenericPayConnectorConfig'
CreateGrantResponse:
type: object
properties:
redirect_uri:
type: string
format: uri
description: Redirect URI with authorization code or error
required:
- redirect_uri
CreateGroupMMSMessageRequest:
type: object
required:
- from
- to
properties:
from:
type: string
description: Phone number, in +E.164 format, used to send the message.
x-format: address
to:
description: A list of destinations. No more than 8 destinations are allowed.
type: array
items:
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: Message body (i.e., content) as a non-empty string.
subject:
type: string
description: Subject of multimedia message
media_urls:
description: A list of media URLs. The total media size must be less than 1 MB.
type: array
items:
type: string
format: url
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
type: string
format: url
use_profile_webhooks:
type: boolean
description: If the profile this number is associated with has webhooks, use them for delivery notifications. If
webhooks are also specified on the message itself, they will be attempted first, then those on the profile.
default: true
example:
from: '+13125551234'
to:
- '+18655551234'
- '+14155551234'
text: Hello, World!
subject: From Telnyx!
media_urls:
- http://example.com
webhook_url: http://example.com/webhooks
webhook_failover_url: https://backup.example.com/hooks
use_profile_webhooks: true
CreateImportRequest:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: The CSV file (Plug.Upload). Missing/non-upload → 400.
block_ttl_days:
type: integer
minimum: 1
default: 30
description: 'TTL for imported `manual_block` rows; other reasons get `expires_at: null`. Invalid/missing → falls
back to 30.'
CreateInboundIpRequest:
type: object
title: Create Inbound Ip Request
properties:
ani_number_format:
type: string
enum:
- +E.164
- E.164
- +E.164-national
- E.164-national
default: E.164-national
description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound
phone calls.
dnis_number_format:
type: string
enum:
- +e164
- e164
- national
- sip_username
default: e164
codecs:
type: array
items:
type: string
description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal
account, in priority order. This only works when the Connection the number is assigned to uses Media Handling
mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.'
default:
- G722
- G711U
- G711A
- G729
- OPUS
- H.264
default_routing_method:
type: string
enum:
- sequential
- round-robin
description: Default routing method to be used when a number is associated with the connection. Must be one of the
routing method types or left blank, other values are not allowed.
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
isup_headers_enabled:
type: boolean
default: false
description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and
only when using TCP or TLS transport.)
prack_enabled:
type: boolean
description: Enable PRACK messages as defined in RFC3262.
default: false
sip_compact_headers_enabled:
type: boolean
description: Defaults to true.
default: true
sip_region:
type: string
default: US
description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be
used.
enum:
- US
- Europe
- Australia
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a
phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from
any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
default: 90
shaken_stir_enabled:
type: boolean
description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE
message of inbound calls, even when using UDP transport.
default: false
example:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: test
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
CreateIntegrationSecretRequest:
properties:
identifier:
type: string
title: Identifier
description: The unique identifier of the secret.
type:
type: string
title: Type
description: The type of secret.
enum:
- bearer
- basic
token:
type: string
title: Token
description: The token for the secret. Required for bearer type secrets, ignored otherwise.
username:
type: string
title: Username
description: The username for the secret. Required for basic type secrets, ignored otherwise.
password:
type: string
title: Password
description: The password for the secret. Required for basic type secrets, ignored otherwise.
type: object
required:
- identifier
- type
title: CreateIntegrationSecretRequest
CreateIosPushCredentialRequest:
type: object
title: Create iOS push credential request
required:
- type
- certificate
- private_key
- alias
properties:
type:
description: Type of mobile push credential. Should be ios here
type: string
enum:
- ios
certificate:
description: Certificate as received from APNs
type: string
example: '-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----'
private_key:
description: Corresponding private key to the certificate as received from APNs
type: string
example: '-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----'
alias:
description: Alias to uniquely identify the credential
type: string
example: LucyIosCredential
CreateIpConnectionRequest:
title: Create IP Connection Request
properties:
active:
type: boolean
description: Defaults to true
example: true
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
type: string
example: string
transport_protocol:
type: string
description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.
default: UDP
enum:
- UDP
- TCP
- TLS
example: UDP
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
example: true
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
example: true
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
example: false
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/CreateInboundIpRequest'
outbound:
$ref: '#/components/schemas/OutboundIp'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
active: true
anchorsite_override: Latency
connection_name: string
transport_protocol: TLS
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: false
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: test
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
outbound:
call_parking_enabled: true
ani_override: string
ani_override_type: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: string
t38_reinvite_source: customer
tech_prefix: string
ip_authentication_method: token
ip_authentication_token: string
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
type: object
CreateIpRequest:
title: Create Ip Request
type: object
required:
- ip_address
properties:
connection_id:
type: string
description: ID of the IP Connection to which this IP should be attached.
ip_address:
type: string
description: IP adddress represented by this resource.
example: 192.168.0.0
port:
type: integer
description: Port to use when connecting to this IP.
default: 5060
example: 5060
example:
connection_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
ip_address: 192.168.0.0
port: 5060
CreateKvNamespaceRequest:
type: object
properties:
name:
type: string
description: Namespace name. May contain lowercase letters, numbers, and hyphens only.
pattern: ^[a-z0-9-]+$
minLength: 1
maxLength: 255
example: my-cache
required:
- name
CreateLongCodeMessageRequest:
type: object
required:
- from
- to
properties:
from:
type: string
description: Phone number, in +E.164 format, used to send the message.
x-format: address
to:
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
subject:
type: string
description: Subject of multimedia message
media_urls:
description: 'A list of media URLs. The total media size must be less than 1 MB.
**Required for MMS**'
type: array
items:
type: string
format: url
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
type: string
format: url
use_profile_webhooks:
type: boolean
description: If the profile this number is associated with has webhooks, use them for delivery notifications. If
webhooks are also specified on the message itself, they will be attempted first, then those on the profile.
default: true
type:
description: The protocol for sending the message, either SMS or MMS.
type: string
enum:
- SMS
- MMS
auto_detect:
description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message
parts.
type: boolean
default: false
encoding:
type: string
description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most
efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded).
`ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding`
setting.
enum:
- auto
- gsm7
- ucs2
default: auto
example:
from: '+18445550001'
to: '+13125550002'
text: Hello, World!
subject: From Telnyx!
media_urls:
- http://example.com
webhook_url: http://example.com/webhooks
webhook_failover_url: https://backup.example.com/hooks
use_profile_webhooks: true
type: MMS
CreateMCPServerRequest:
type: object
properties:
name:
type: string
title: Name
type:
type: string
title: Type
url:
type: string
title: Url
api_key_ref:
type:
- string
- 'null'
title: Api Key Ref
allowed_tools:
type:
- array
- 'null'
items:
type: string
title: Allowed Tools
required:
- name
- type
- url
title: CreateMCPServerRequest
CreateManagedAccountRequest:
title: Create Managed Account Request
required:
- business_name
properties:
email:
type: string
description: The email address for the managed account. If not provided, the email address will be generated based
on the email address of the manager account.
example: new_managed_account@customer.org
password:
type: string
description: Password for the managed account. If a password is not supplied, the account will not be able to be
signed into directly. (A password reset may still be performed later to enable sign-in via password.)
example: 3jVjLq!tMuWKyWx4NN*CvhnB
business_name:
type: string
description: The name of the business for which the new managed account is being created, that will be used as the
managed accounts's organization's name.
example: Larry's Cat Food Inc
managed_account_allow_custom_pricing:
type: boolean
description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not.
If false, uses the pricing of the manager account. Defaults to false. This value may be changed after creation,
but there may be time lag between when the value is changed and pricing changes take effect.
example: false
rollup_billing:
type: boolean
description: Boolean value that indicates if the billing information and charges to the managed account "roll up"
to the manager account. If true, the managed account will not have its own balance and will use the shared balance
with the manager account. This value cannot be changed after account creation without going through Telnyx support
as changes require manual updates to the account ledger. Defaults to false.
example: false
example:
email: larry_cat_food@customer.org
password: 3jVjLq!tMuWKyWx4NN*CvhnB
business_name: Larry's Cat Food Inc
managed_account_allow_custom_pricing: false
rollup_billing: false
type: object
CreateMeetingSessionArtifactRequest:
title: CreateMeetingSessionArtifactRequest
description: 'One of two shapes: a named type on its own, or `custom` with the prompt it answers.'
oneOf:
- title: Named artifact
type: object
additionalProperties: false
required:
- type
properties:
type:
type: string
enum:
- summary
- action_items
- decisions
- topics
- open_questions
description: What to generate from the transcript. `custom` is answered from a `prompt` you supply; the five named
types need none.
- title: Custom artifact
type: object
additionalProperties: false
required:
- type
- prompt
properties:
type:
type: string
const: custom
description: Answered from the `prompt` below rather than a fixed question.
prompt:
type: string
minLength: 1
maxLength: 4000
description: An open-ended request answered from the transcript. Required when `type` is `custom`, and rejected
with 400 on any named type. Trimmed before storage and echoed back in artifact responses and the `artifact.completed`
webhook.
CreateMeetingSessionRequest:
title: CreateMeetingSessionRequest
type: object
additionalProperties: false
description: 'Request body for creating a new meeting session.
Cross-field rules:
- `assistant` cannot be combined with `join_at`; it is available only for sessions that join immediately.
- `assistant` cannot be combined with `barge_in: true`.
- `assistant.avatar: true` cannot be combined with `speak_on_enter`; the assistant greets through its avatar.
- The `assistant` options, including `avatar`, take effect at session creation and cannot be modified later.
- A digital avatar or Assistant webpage output takes precedence over `camera_image`; the static image is ignored and
a URL source is not fetched.
- The former top-level `avatar` object (bring-your-own-key avatar) has been removed and is rejected with 400 `invalid_request`;
use `assistant.avatar` instead.'
required:
- meeting_url
properties:
meeting_url:
type: string
format: uri
description: The meeting URL the bot should join.
bot_name:
type: string
minLength: 1
maxLength: 100
description: Display name for the bot in the meeting. Defaults to "Meeting Bot".
join_at:
type: string
format: date-time
description: ISO-8601 timestamp in the future at which the bot should join. If omitted, the bot joins immediately.
voice:
type: string
minLength: 1
maxLength: 100
description: Session-default voice identifier used for `speak_on_enter` and ordinary speak actions. A voice supplied
on an individual speak action overrides this default for that utterance.
speak_on_enter:
type: string
minLength: 1
maxLength: 4000
description: 'Text the bot speaks when it enters the meeting. **Not spoken when an `assistant` is attached**: the
value is accepted and echoed back on the session, but the assistant owns the voice and the line is never delivered,
with no event reporting the omission. Use `chat_on_enter` to announce an assistant-backed bot. Rejected with 400
`invalid_request` when `assistant.avatar` is `true`.'
chat_on_enter:
type: string
minLength: 1
maxLength: 4000
description: 'A message the bot posts to the meeting''s chat as soon as it becomes active — typically a recording
disclosure. Delivered at most once. Independent of `speak_on_enter`: both may be set, and the chat message posts
first because it does not wait for text-to-speech or avatar startup. Rejected with 422 `unsupported_capability`
on platforms without meeting chat.'
barge_in:
type: boolean
default: false
description: 'When enabled, a human participant `speech_on` event interrupts and stops the current bot audio; it
does not bypass admission or initiate speech. Assistant sessions reject `barge_in: true`.'
summarize_on_end:
type: boolean
default: false
description: If true, generate a summary artifact when the session ends.
camera_image:
$ref: '#/components/schemas/MeetingSessionCameraImage'
webhook_url:
type: string
format: uri
description: HTTPS endpoint to receive session lifecycle callbacks. Static validation requires HTTPS, rejects embedded
credentials and blocked hosts, and enforces egress policy. Validation makes no network request to the endpoint.
metadata:
type: object
additionalProperties: true
description: Arbitrary key-value metadata attached to the session. The serialized JSON representation must not exceed
16384 characters at runtime.
idempotency_key:
type: string
minLength: 1
maxLength: 255
description: Client-supplied idempotency key to safely retry creation requests without duplicating sessions. Lookup
is scoped to the authenticated account and compares the key only; the request payload is not fingerprinted or
compared.
assistant:
$ref: '#/components/schemas/MeetingSessionAssistantRequest'
examples:
- meeting_url: https://zoom.us/j/1234567890
bot_name: Notetaker
- meeting_url: https://meet.google.com/abc-defg-hij
bot_name: Avatar Assistant
assistant:
id: asst_fake-uuid-1234
audio_gate: full_duplex
avatar: true
leave_on_end: true
- meeting_url: https://teams.microsoft.com/l/meetup-join/example
bot_name: Voice Assistant
assistant:
id: asst_fake-uuid-1234
audio_gate: half_duplex
dynamic_variables:
candidate_name: Ada Lovelace
role: Staff Engineer
CreateMeetingSessionResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
$ref: '#/components/schemas/MeetingSessionCreated'
CreateMessageRequest:
type: object
required:
- to
properties:
from:
type: string
description: 'Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
**Required if sending with a phone number, short code, or alphanumeric sender ID.**
'
x-format: address
messaging_profile_id:
type: string
description: 'Unique identifier for a messaging profile.
**Required if sending via number pool or with an alphanumeric sender ID.**
'
to:
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
subject:
type: string
description: Subject of multimedia message
media_urls:
description: 'A list of media URLs. The total media size must be less than 1 MB.
**Required for MMS**'
type: array
items:
type: string
format: url
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
type: string
format: url
use_profile_webhooks:
type: boolean
description: If the profile this number is associated with has webhooks, use them for delivery notifications. If
webhooks are also specified on the message itself, they will be attempted first, then those on the profile.
default: true
type:
description: The protocol for sending the message, either SMS or MMS.
type: string
enum:
- SMS
- MMS
auto_detect:
description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message
parts.
type: boolean
default: false
send_at:
description: ISO 8601 formatted date indicating when to send the message - accurate up till a minute.
type:
- string
- 'null'
format: date-time
encoding:
type: string
description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most
efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded).
`ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding`
setting.
enum:
- auto
- gsm7
- ucs2
default: auto
example:
from: '+18445550001'
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
to: '+18445550001'
text: Hello, World!
subject: From Telnyx!
media_urls:
- http://example.com
webhook_url: http://example.com/webhooks
webhook_failover_url: https://backup.example.com/hooks
use_profile_webhooks: true
type: MMS
CreateMessageTemplateRequest:
title: CreateMessageTemplateRequest
description: The request body when creating a message template.
required:
- text
type: object
properties:
text:
example: 'Your {{app_name}} verification code is: {{code}}.'
type: string
description: The text content of the message template.
CreateMessagingHostedNumberOrderRequest:
type: object
example:
messaging_profile_id: dc8f39ac-953d-4520-b93b-786ae87db0da
phone_numbers:
- '+18665550001'
- '+18665550002'
properties:
phone_numbers:
type: array
items:
type: string
x-format: +E.164
description: Phone numbers to be used for hosted messaging.
messaging_profile_id:
type: string
description: Automatically associate the number with this messaging profile ID when the order is complete.
CreateMessagingProfileRequest:
type: object
required:
- name
- whitelisted_destinations
properties:
name:
description: A user friendly name for the messaging profile.
type: string
whitelisted_destinations:
description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid
ISO 3166-1 alpha-2 country codes. If set to `["*"]` all destinations will be allowed.
type: array
items:
description: ISO 3166-1 alpha-2 country code.
type: string
pattern: ^[A-Z]{2}$
enabled:
description: Specifies whether the messaging profile is enabled or not.
type: boolean
default: true
webhook_url:
description: The URL where webhooks related to this messaging profile will be sent.
type:
- string
- 'null'
format: url
default: ''
webhook_failover_url:
description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary
URL fails.
type:
- string
- 'null'
format: url
default: ''
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.
type: string
enum:
- '1'
- '2'
- '2010-04-01'
default: '2'
number_pool_settings:
$ref: '#/components/schemas/NumberPoolSettings'
url_shortener_settings:
$ref: '#/components/schemas/UrlShortenerSettings'
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
daily_spend_limit:
description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.
type: string
pattern: ^[0-9]+(?:\.[0-9]+)?$
daily_spend_limit_enabled:
description: Whether to enforce the value configured by `daily_spend_limit`.
type: boolean
mms_fall_back_to_sms:
description: enables SMS fallback for MMS messages.
type: boolean
default: false
mms_transcoding:
description: enables automated resizing of MMS media.
type: boolean
default: false
mobile_only:
description: Send messages only to mobile phone numbers.
type: boolean
default: false
smart_encoding:
description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically
selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and
minimize costs.
type: boolean
default: false
resource_group_id:
type:
- string
- 'null'
maxLength: 64
description: The resource group ID to associate with this messaging profile.
health_webhook_url:
type:
- string
- 'null'
format: url
description: A URL to receive health check webhooks for numbers in this profile.
ai_assistant_id:
type:
- string
- 'null'
maxLength: 64
description: The AI assistant ID to associate with this messaging profile.
example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000
example:
name: My name
enabled: true
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
webhook_api_version: '2'
number_pool_settings:
toll_free_weight: 10
long_code_weight: 1
skip_unhealthy: true
sticky_sender: false
geomatch: false
url_shortener_settings:
domain: example.ex
prefix: ''
replace_blacklist_only: true
send_webhooks: false
whitelisted_destinations:
- US
CreateMissionRequest:
properties:
name:
type: string
title: Name
description:
title: Description
type: string
model:
title: Model
type: string
instructions:
title: Instructions
type: string
execution_mode:
$ref: '#/components/schemas/ExecutionMode'
default: external
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
required:
- name
title: CreateMissionRequest
CreateMissionRunRequest:
properties:
input:
title: Input
additionalProperties: true
type: object
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
title: CreateMissionRunRequest
CreateMsgReq:
properties:
role:
type: string
title: Role
content:
type: string
title: Content
default: ''
name:
type: string
title: Name
tool_choice:
anyOf:
- type: string
- type: object
title: ToolChoiceObject
title: Tool Choice
tool_calls:
items:
type: object
additionalProperties: true
type: array
title: Tool Calls
tool_call_id:
type: string
title: Tool Call Id
sent_at:
type: string
format: date-time
title: Sent At
metadata:
type: object
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
- items:
anyOf:
- type: string
- type: integer
- type: boolean
type: array
title: Metadata
type: object
required:
- role
title: CreateMsgReq
CreateMultiPartDocServiceDocumentRequest:
type: object
properties:
file:
description: The file you are uploading.
type: string
format: binary
customer_reference:
type: string
description: Optional reference string for customer tracking.
example: MY REF 001
CreateNumberBlockOrderRequest:
required:
- starting_number
- range
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
record_type:
type: string
example: number_block_order
readOnly: true
starting_number:
type: string
description: Starting phone number block
example: '+19705555000'
writeOnly: true
range:
type: integer
description: The phone number range included in the block.
example: 10
writeOnly: true
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 10
readOnly: true
connection_id:
type: string
example: '346789098765567'
description: Identifies the connection associated with this phone number.
messaging_profile_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
status:
type: string
enum:
- pending
- success
- failure
description: The status of the order.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
readOnly: true
errors:
type: string
description: Errors the reservation could happen upon
example: Number is already on hold
readOnly: true
example:
starting_number: '+19705555000'
range: 10
type: object
CreateNumberOrderRequest:
properties:
phone_numbers:
type: array
items:
type: object
properties:
phone_number:
type: string
description: e164_phone_number
example: '+19705555098'
requirement_group_id:
type: string
description: ID of requirement group to use to satisfy number requirements
example: dbbd94ee-9079-488f-80ba-f566b247fd7
bundle_id:
type: string
description: ID of bundle to associate the number to
example: bc8e4d67-33a0-4cbb-af74-7b58f05bd494
required:
- phone_number
writeOnly: true
connection_id:
type: string
example: '346789098765567'
description: Identifies the connection associated with this phone number.
messaging_profile_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
billing_group_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the billing group associated with the phone number.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
example:
phone_numbers:
- phone_number: '+19705555098'
bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd494
- phone_number: '+492111609539'
requirement_group_id: dbbd94ee-9079-488f-80ba-f566b247fd79
connection_id: '346789098765567'
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600
billing_group_id: abc85f64-5717-4562-b3fc-2c9600
customer_reference: MY REF 001
type: object
CreateNumberPoolMessageRequest:
type: object
required:
- to
- messaging_profile_id
properties:
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
to:
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
subject:
type: string
description: Subject of multimedia message
media_urls:
description: 'A list of media URLs. The total media size must be less than 1 MB.
**Required for MMS**'
type: array
items:
type: string
format: url
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
type: string
format: url
use_profile_webhooks:
type: boolean
description: If the profile this number is associated with has webhooks, use them for delivery notifications. If
webhooks are also specified on the message itself, they will be attempted first, then those on the profile.
default: true
type:
description: The protocol for sending the message, either SMS or MMS.
type: string
enum:
- SMS
- MMS
auto_detect:
description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message
parts.
type: boolean
default: false
encoding:
type: string
description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most
efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded).
`ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding`
setting.
enum:
- auto
- gsm7
- ucs2
default: auto
example:
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
to: '+13125550002'
text: Hello, World!
subject: From Telnyx!
media_urls:
- http://example.com
webhook_url: http://example.com/webhooks
webhook_failover_url: https://backup.example.com/hooks
use_profile_webhooks: true
type: MMS
CreateNumberReservationRequest:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
record_type:
type: string
example: number_reservation
readOnly: true
phone_numbers:
type: array
items:
$ref: '#/components/schemas/ReservedPhoneNumber'
status:
type: string
enum:
- pending
- success
- failure
description: The status of the entire reservation.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the numbers reservation was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number reservation was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
example:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type: number_reservation
phone_numbers:
- id: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type: reserved_phone_number
phone_number: '+19705555098'
status: pending
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
expired_at: '2018-01-01T00:00:00.000000Z'
errors: Number is already on hold
status: pending
customer_reference: MY REF 001
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
type: object
CreateOAuthGrantRequest:
type: object
properties:
allowed:
type: boolean
description: Whether the grant is allowed
consent_token:
type: string
description: Consent token
required:
- allowed
- consent_token
additionalProperties: false
CreateOutboundVoiceProfileRequest:
type: object
title: Outbound Voice Profile
required:
- name
example:
name: office
traffic_type: conversational
service_plan: global
concurrent_call_limit: 10
enabled: true
tags:
- office-profile
usage_payment_method: rate-deck
whitelisted_destinations:
- US
- BR
- AU
max_destination_rate: 10
daily_spend_limit: '100.00'
daily_spend_limit_enabled: true
billing_group_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
calling_window:
start_time: 08:00:00.00Z
end_time: 20:00:00.00Z
calls_per_cld: 5
properties:
name:
type: string
description: A user-supplied name to help with organization.
example: office
minLength: 3
traffic_type:
$ref: '#/components/schemas/TrafficType'
service_plan:
$ref: '#/components/schemas/ServicePlan'
concurrent_call_limit:
type:
- integer
- 'null'
description: Must be no more than your global concurrent call limit. Null means no limit.
example: 10
enabled:
type: boolean
description: Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound
calls being blocked for the associated Connections.
example: true
default: true
tags:
type: array
items:
type: string
example:
- office-profile
usage_payment_method:
$ref: '#/components/schemas/UsagePaymentMethod'
whitelisted_destinations:
type: array
items:
type: string
description: The list of destinations you want to be able to call using this outbound voice profile formatted in
alpha2.
example:
- US
- BR
- AU
default:
- US
- CA
max_destination_rate:
type: number
description: Maximum rate (price per minute) for a Destination to be allowed when making outbound calls.
daily_spend_limit:
type: string
description: The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile
in a day before disallowing new calls.
example: '100.00'
daily_spend_limit_enabled:
type: boolean
description: Specifies whether to enforce the daily_spend_limit on this outbound voice profile.
example: true
default: false
call_recording:
$ref: '#/components/schemas/OutboundCallRecording'
billing_group_id:
type:
- string
- 'null'
format: uuid
description: The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
default: null
calling_window:
type: object
description: Specifies the time window and call limits for calls made using this outbound voice profile. Note that
all times are UTC in 24-hour clock time.
example:
start_time: 08:00:00.00Z
end_time: 20:00:00.00Z
calls_per_cld: 5
properties:
start_time:
type: string
description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.
example: 08:00:00.00Z
format: time
end_time:
type: string
description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.
example: 20:00:00.00Z
format: time
calls_per_cld:
type: integer
description: The maximum number of calls that can be initiated to a single called party (CLD) within the calling
window. A null value means no limit.
example: 5
minimum: 0
CreatePlanRequest:
properties:
steps:
items:
$ref: '#/components/schemas/CreatePlanStepRequest'
type: array
title: Steps
type: object
required:
- steps
title: CreatePlanRequest
CreatePlanStepRequest:
properties:
step_id:
type: string
title: Step Id
description:
type: string
title: Description
sequence:
type: integer
title: Sequence
parent_step_id:
title: Parent Step Id
type: string
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
required:
- step_id
- description
- sequence
title: CreatePlanStepRequest
CreatePortingOrder:
type: object
title: CreatePortingOrder
required:
- phone_numbers
properties:
phone_numbers:
type: array
items:
type: string
description: The list of +E.164 formatted phone numbers
example:
- '+13035550000'
- '+13035550001'
- '+13035550002'
customer_reference:
type:
- string
- 'null'
description: A customer-specified reference number for customer bookkeeping purposes
example: Acct 123abc
customer_group_reference:
type: string
description: A customer-specified group reference for customer bookkeeping purposes
example: Group-456
CreatePortingOrderComment:
type: object
properties:
body:
type: string
example: Please, let me know when the port completes
CreatePronunciationDictRequest:
type: object
description: Request body for creating a pronunciation dictionary.
required:
- name
- items
properties:
name:
type: string
description: Human-readable name. Must be unique within the organization.
minLength: 1
maxLength: 255
example: Brand Names
items:
type: array
description: List of pronunciation items (alias or phoneme type). At least one item is required.
minItems: 1
maxItems: 100
items:
$ref: '#/components/schemas/PronunciationDictItem'
CreateQueueRequest:
type: object
title: Create Queue Request
required:
- queue_name
properties:
queue_name:
description: The name of the queue. Must be between 1 and 255 characters.
type: string
minLength: 1
maxLength: 255
example: tier_1_support
max_size:
description: The maximum number of calls allowed in the queue.
type: integer
minimum: 1
default: 300
example: 100
example:
queue_name: tier_1_support
max_size: 100
CreateRequirementVersionRequest:
type: object
required:
- effective_start_at
- requirement_type_ids
properties:
effective_start_at:
description: ISO 8601 formatted date-time indicating when the new version should become active. Must be a future
date-time.
type: string
format: date-time
example: '2026-08-01T00:00:00.000Z'
requirement_type_ids:
description: List of requirement type UUIDs that apply to the new version. Replaces the existing requirement types
for the new version.
type: array
items:
type: string
format: uuid
example:
- a38c217a-8019-48f8-bff6-0fdd9939075b
CreateRoomClientTokenRequest:
type: object
properties:
token_ttl_secs:
description: The time to live in seconds of the Client Token, after that time the Client Token is invalid and can't
be used to join a Room.
type: integer
example: 600
default: 600
minimum: 10
maximum: 3600
refresh_token_ttl_secs:
description: The time to live in seconds of the Refresh Token, after that time the Refresh Token is invalid and
can't be used to refresh Client Token.
type: integer
example: 3600
default: 3600
minimum: 60
maximum: 86400
CreateRoomCompositionRequest:
type: object
properties:
format:
description: The desired format of the room composition.
type: string
example: mp4
default: mp4
resolution:
description: The desired resolution (width/height in pixels) of the resulting video of the room composition. Both
width and height are required to be between 16 and 1280; and width * height should not exceed 1280 * 720
type: string
example: 800x600
default: 1280x720
session_id:
description: id of the room session associated with the room composition.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
video_layout:
description: Describes the video layout of the room composition in terms of regions.
type: object
additionalProperties:
$ref: '#/components/schemas/VideoRegion'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this room composition will be sent. Must include a scheme, such as
'https'.
example: https://example.com
webhook_event_failover_url:
type: string
format: uri
description: The failover URL where webhooks related to this room composition will be sent if sending to the primary
URL fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type: integer
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
CreateRoomRequest:
type: object
properties:
unique_name:
description: The unique (within the Telnyx account scope) name of the room.
type: string
example: My room
max_participants:
description: The maximum amount of participants allowed in a room. If new participants try to join after that limit
is reached, their request will be rejected.
type: integer
example: 10
default: 10
minimum: 2
maximum: 50
enable_recording:
description: Enable or disable recording for that room.
type: boolean
example: true
default: false
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type: string
format: uri
description: The failover URL where webhooks related to this room will be sent if sending to the primary URL fails.
Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type: integer
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
CreateScheduledEventRequest:
properties:
telnyx_conversation_channel:
$ref: '#/components/schemas/ConversationChannelType'
telnyx_end_user_target:
type: string
description: The phone number, SIP URI, to schedule the call or text to.
title: Telnyx End User Target
telnyx_agent_target:
type: string
description: The phone number, SIP URI, to schedule the call or text from.
title: Telnyx Agent Target
scheduled_at_fixed_datetime:
type: string
format: date-time
description: The datetime at which the event should be scheduled. Formatted as ISO 8601.
example: '2025-04-15T13:07:28.764Z'
title: Scheduled At Fixed Datetime
text:
type: string
description: Required for sms scheduled events. The text to be sent to the end user.
conversation_metadata:
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
type: object
description: Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers
can also add their own.
title: Conversation Metadata
dynamic_variables:
additionalProperties:
type: string
type: object
description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions
and messages using {{variable_name}} syntax.
title: Dynamic Variables
max_retries_client_errors:
type: integer
maximum: 10.0
minimum: 0.0
title: Max Retries Client Errors
description: 'Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before
the callee answered)'
default: 0
retry_interval_secs:
title: Retry Interval Secs
type: integer
maximum: 86400.0
minimum: 60.0
call_settings:
$ref: '#/components/schemas/ScheduledCallSettings'
type: object
required:
- telnyx_conversation_channel
- telnyx_end_user_target
- telnyx_agent_target
- scheduled_at_fixed_datetime
title: CreateScheduledEventRequest
CreateScheduledMessageRequest:
type: object
required:
- to
properties:
from:
type: string
description: 'Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
**Required if sending with a phone number, short code, or alphanumeric sender ID.**
'
x-format: address
messaging_profile_id:
type: string
description: 'Unique identifier for a messaging profile.
**Required if sending via number pool or with an alphanumeric sender ID.**
'
to:
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
subject:
type: string
description: Subject of multimedia message
media_urls:
description: 'A list of media URLs. The total media size must be less than 1 MB.
**Required for MMS**'
type: array
items:
type: string
format: url
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
type: string
format: url
use_profile_webhooks:
type: boolean
description: If the profile this number is associated with has webhooks, use them for delivery notifications. If
webhooks are also specified on the message itself, they will be attempted first, then those on the profile.
default: true
type:
description: The protocol for sending the message, either SMS or MMS.
type: string
enum:
- SMS
- MMS
auto_detect:
description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message
parts.
type: boolean
default: false
send_at:
description: ISO 8601 formatted date indicating when to send the message - accurate up till a minute.
type: string
format: date-time
example:
from: '+18445550001'
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
to: '+18445550001'
text: Hello, World!
subject: From Telnyx!
webhook_url: http://example.com/webhooks
webhook_failover_url: https://backup.example.com/hooks
use_profile_webhooks: true
type: SMS
send_at: '2019-01-23T18:30:00Z'
CreateScheduledTestJobRequest:
type: object
properties:
crontab_expression:
type: string
description: Cron expression controlling when the job runs.
name:
type: string
scenarios:
type: array
items:
type: integer
tags:
type: array
items:
type: string
agent:
type: integer
timezone:
type: string
personalities:
type: array
items:
type: integer
execution_mode:
type: string
description: Execution mode for the test runs, such as voice, text, or sip.
frequency:
type: integer
run_as_text:
type: boolean
notify_on:
type: string
enum:
- never
- success
- failure
- both
is_active:
type: boolean
required:
- crontab_expression
example:
crontab_expression: 0 3 * * *
name: Nightly regression
agent: 1259
scenarios:
- 9512
timezone: America/Chicago
execution_mode: voice
notify_on: failure
CreateSessionRequest:
type: object
required:
- policy
properties:
policy:
type: object
required:
- allowed_domains
properties:
allowed_domains:
type: array
items:
type: string
minLength: 1
minItems: 1
maxItems: 50
description: Domain patterns the browser can navigate to. Exact match (example.com) or wildcard (*.example.com).
IP literals not allowed.
additionalProperties: false
limits:
type: object
properties:
lifetime_s:
type: integer
minimum: 60
maximum: 1800
default: 900
description: Max session duration in seconds (60-1800).
idle_timeout_s:
type: integer
minimum: 30
default: 300
description: Idle timeout in seconds. Must not exceed lifetime_s.
additionalProperties: false
metadata:
type: object
description: Arbitrary key-value metadata.
idempotency_key:
type: string
minLength: 1
maxLength: 255
description: Scoped to the organization. The same key and identical normalized policy, limits, and metadata replay
the existing session (HTTP 201); a different request returns 409 idempotency_conflict. Replays do not restart
terminal sessions.
additionalProperties: false
CreateSharedToolRequest:
properties:
type:
type: string
title: Type
display_name:
type: string
title: Display Name
function:
title: Function
additionalProperties: true
type: object
retrieval:
title: Retrieval
additionalProperties: true
type: object
handoff:
title: Handoff
additionalProperties: true
type: object
invite:
title: Invite
additionalProperties: true
type: object
webhook:
title: Webhook
additionalProperties: true
type: object
pay:
$ref: '#/components/schemas/PayToolParams'
title: Pay
client_side_tool:
title: Client Side Tool
additionalProperties: true
type: object
update_dynamic_variables:
$ref: '#/components/schemas/UpdateDynamicVariablesToolParams'
title: Update Dynamic Variables
vision:
$ref: '#/components/schemas/VisionToolParams'
title: Vision
timeout_ms:
type: integer
title: Timeout Ms
default: 5000
additionalProperties: true
type: object
required:
- type
- display_name
title: CreateSharedToolRequest
description: Request model for creating a shared (org-level) tool.
CreateShortCodeMessageRequest:
type: object
required:
- from
- to
properties:
from:
type: string
description: Phone number, in +E.164 format, used to send the message.
x-format: address
to:
$ref: '#/components/schemas/ToNumber'
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
subject:
type: string
description: Subject of multimedia message
media_urls:
description: 'A list of media URLs. The total media size must be less than 1 MB.
**Required for MMS**'
type: array
items:
type: string
format: url
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
type: string
format: url
use_profile_webhooks:
type: boolean
description: If the profile this number is associated with has webhooks, use them for delivery notifications. If
webhooks are also specified on the message itself, they will be attempted first, then those on the profile.
default: true
type:
description: The protocol for sending the message, either SMS or MMS.
type: string
enum:
- SMS
- MMS
auto_detect:
description: Automatically detect if an SMS message is unusually long and exceeds a recommended limit of message
parts.
type: boolean
default: false
encoding:
type: string
description: Encoding to use for the message. `auto` (default) uses smart encoding to automatically select the most
efficient encoding. `gsm7` forces GSM-7 encoding (returns 400 if message contains characters that cannot be encoded).
`ucs2` forces UCS-2 encoding and disables smart encoding. When set, this overrides the messaging profile's `smart_encoding`
setting.
enum:
- auto
- gsm7
- ucs2
default: auto
example:
from: '+18445550001'
to: '+18445550001'
text: Hello, World!
subject: From Telnyx!
media_urls:
- http://example.com
webhook_url: http://example.com/webhooks
webhook_failover_url: https://backup.example.com/hooks
use_profile_webhooks: true
type: MMS
CreateSpendLimitRequest:
description: 'Send exactly one of `amount` and `unlimited: true`.'
oneOf:
- $ref: '#/components/schemas/CreateSpendLimitWithAmount'
- $ref: '#/components/schemas/CreateSpendLimitUnlimited'
CreateSpendLimitUnlimited:
title: Unlimited
description: Explicitly no cap. Not available for API key limits.
type: object
additionalProperties: false
properties:
product:
type: string
description: Product to limit, as returned in `product` by the list operation.
example: inference
period:
$ref: '#/components/schemas/SpendLimitPeriod'
unlimited:
type: boolean
enum:
- true
description: '`true`: explicitly no cap.'
example: true
reason:
type: string
maxLength: 500
description: Why the limit is set or changed, kept for audit.
example: Team budget
required:
- product
- unlimited
CreateSpendLimitWithAmount:
title: Amount
description: A limit in USD.
type: object
additionalProperties: false
properties:
product:
type: string
description: Product to limit, as returned in `product` by the list operation.
example: inference
period:
$ref: '#/components/schemas/SpendLimitPeriod'
credential_id:
type: string
nullable: true
minLength: 1
maxLength: 255
description: 'Optional. Identifier of one API key as recorded on usage, never the key''s secret: the limit then
applies to that key only. Absent or `null` sets the total limit. A blank value, or one with control characters,
is refused; it never means the total limit. An API key limit always has an `amount`.'
example: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
amount:
type: number
minimum: 0
description: Limit in USD. `0` blocks at the first cent of spend.
example: 100
unlimited:
type: boolean
enum:
- false
description: Optional; only `false` is allowed together with `amount`.
example: false
reason:
type: string
maxLength: 500
description: Why the limit is set or changed, kept for audit.
example: Team budget
required:
- product
- amount
CreateSqlDatabaseRequest:
type: object
properties:
name:
type: string
description: Database name. Lowercase letters, numbers, and hyphens only; must start and end with a letter or number.
pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
minLength: 1
maxLength: 255
example: my-database
required:
- name
CreateSubNumberOrdersReportRequest:
type: object
properties:
status:
type: string
description: Filter by order status
enum:
- pending
- success
- failure
example: success
country_code:
type: string
description: Filter by country code
example: US
created_at_gt:
type: string
format: date-time
description: Filter for orders created after this date
example: '2023-04-05T10:22:08.230549Z'
created_at_lt:
type: string
format: date-time
description: Filter for orders created before this date
example: '2025-06-05T10:22:08.230549Z'
order_request_id:
type: string
format: uuid
description: Filter by specific order request ID
example: 12ade33a-21c0-473b-b055-b3c836e1c293
customer_reference:
type: string
description: Filter by customer reference
example: STRING
example:
status: success
country_code: US
created_at_gt: '2023-04-05T10:22:08.230549Z'
created_at_lt: '2025-06-05T10:22:08.230549Z'
order_request_id: 12ade33a-21c0-473b-b055-b3c836e1c293
customer_reference: STRING
CreateTeXMLSecretRequest:
type: object
title: Create TeXML Secret request
required:
- name
- value
example:
name: My Secret Name
value: My Secret Value
properties:
name:
type: string
description: Name used as a reference for the secret, if the name already exists within the account its value will
be replaced
example: My Secret Name
value:
type: string
description: Secret value which will be used when rendering the TeXML template
example: My Secret Value
CreateTeXMLSecretResult:
type: object
title: Create TeXML Secret result
example:
name: My Secret Name
value: REDACTED
properties:
name:
type: string
example: My Secret Name
value:
type: string
enum:
- REDACTED
example: REDACTED
CreateTestAgentRequest:
type: object
properties:
agent_name:
type: string
description: Name of the test agent.
assistant_id:
type: string
description: ID of the Telnyx AI assistant under test.
description:
type: string
contact_number:
type: string
language:
type: string
description: ISO language code the test agent converses in.
llm_model:
type: string
llm_system_prompt:
type: string
llm_temperature:
type: number
llm_max_tokens:
type: integer
sip_endpoint:
type: string
inbound:
type: boolean
outbound_auto_call:
type: boolean
auto_update_dropoff_nodes:
type: boolean
auto_update_topic_nodes:
type: boolean
auto_fetch_calls_enabled:
type: boolean
auto_sync_prompt_enabled:
type: boolean
required:
- agent_name
- assistant_id
example:
agent_name: Support Bot Under Test
assistant_id: e1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6
description: Evaluates the support assistant against generated callers.
language: en
llm_model: openai/gpt-oss-120b
llm_temperature: 0.7
llm_max_tokens: 512
inbound: false
sip_endpoint: ''
outbound_auto_call: false
auto_update_dropoff_nodes: false
auto_update_topic_nodes: false
CreateTexmlApplicationRequest:
type: object
title: Create Texml Application Request
required:
- friendly_name
- voice_url
properties:
friendly_name:
$ref: '#/components/schemas/ApplicationName'
active:
$ref: '#/components/schemas/ConnectionActive'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
dtmf_type:
$ref: '#/components/schemas/DtmfType'
first_command_timeout:
$ref: '#/components/schemas/FirstCommandTimeout'
first_command_timeout_secs:
$ref: '#/components/schemas/FirstCommandTimeoutSecs'
tags:
type: array
items:
type: string
description: Tags associated with the Texml Application.
example:
- tag1
- tag2
voice_url:
type: string
description: URL to which Telnyx will deliver your XML Translator webhooks.
format: uri
example: https://example.com
voice_fallback_url:
type: string
description: URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your
voice_url.
default: null
format: uri
example: https://fallback.example.com
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this TeXML Application.
default: false
voice_method:
type: string
description: HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or
'post'.
enum:
- get
- post
default: post
example: get
status_callback:
type: string
description: URL for Telnyx to send requests to containing information about call progress events.
default: null
format: uri
example: https://example.com
status_callback_method:
type: string
description: HTTP request method Telnyx should use when requesting the status_callback URL.
enum:
- get
- post
default: post
example: get
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of inbound calls to phone numbers associated with this
connection.
default: null
example: 10
shaken_stir_enabled:
type: boolean
description: When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.
default: false
example: false
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way
a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called
from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
default: null
example: example
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
example: only_my_connections
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/OutboundVoiceProfileId'
example:
friendly_name: call-router
active: false
anchorsite_override: Amsterdam, Netherlands
dtmf_type: Inband
first_command_timeout: true
first_command_timeout_secs: 10
voice_url: https://example.com
voice_fallback_url: https://fallback.example.com
call_cost_in_webhooks: false
voice_method: get
status_callback: https://example.com
status_callback_method: get
tags:
- tag1
- tag2
inbound:
channel_limit: 10
shaken_stir_enabled: true
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
CreateUacConnectionRequest:
type: object
title: Create UAC Connection Request
required:
- connection_name
properties:
active:
type: boolean
description: Defaults to true
user_name:
type: string
description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric
values only (no spaces or special characters).
example: myusername123
password:
type: string
description: The password to be used as part of the credentials. Must be 8 to 128 characters long.
example: my123secure456password789
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
sip_uri_calling_preference:
type: string
description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted)
then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also
choose to allow only calls that are originated on any Connections under your account (internal).
enum:
- disabled
- unrestricted
- internal
default_on_hold_comfort_noise_enabled:
type: boolean
default: false
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; defaults to false when omitted on creation.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1, v2 or texml. Note - texml can only be
set when the outbound object parameter call_parking_enabled is included and set to true.
enum:
- '1'
- '2'
- texml
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/UacInboundRequest'
outbound:
$ref: '#/components/schemas/UacOutbound'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
internal_uac_settings:
$ref: '#/components/schemas/UacInternalSettings'
external_uac_settings:
$ref: '#/components/schemas/UacExternalSettings'
example:
active: true
password: my123secure456password789
user_name: myusername123
anchorsite_override: Latency
connection_name: my name
sip_uri_calling_preference: disabled
default_on_hold_comfort_noise_enabled: false
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: disabled
outbound:
call_parking_enabled: true
ani_override: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: US
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
internal_uac_settings:
destination_uri: 14155550123@acme.sip.telnyx.com
external_uac_settings:
username: ext8492
password: testtesttest
proxy: sip-pbx.acme.example
auth_username: auth8492
from_user: '8492'
outbound_proxy: outbound.sip-pbx.acme.example:5061
expiration_sec: 600
transport: TLS
user_agent: Telnyx-Usage-Voice-Trunk/1.0
bridge_generate_comfort_noise_on_cn: false
description: A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk,
where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx
to maintain the registration.
CreateUnsubscribeGroupRequest:
type: object
required:
- name
properties:
name:
type: string
minLength: 1
maxLength: 255
description:
type: string
nullable: true
CreateUserBundlesBulkRequest:
properties:
idempotency_key:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
description: Idempotency key for the request. Can be any UUID, but should always be unique for each request.
items:
type: array
items:
type: object
properties:
billing_bundle_id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
description: Quantity of user bundles to order.
quantity:
type: integer
description: Quantity of user bundles to order.
required:
- billing_bundle_id
- quantity
writeOnly: true
type: object
CreateVerificationRequest:
title: CreateVerificationRequest
description: The request body when creating a verification.
required:
- phone_number
- verify_profile_id
type: object
properties:
phone_number:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
verify_profile_id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
type: string
format: uuid
description: The identifier of the associated Verify profile.
timeout_secs:
type: integer
example: 300
description: The number of seconds the verification code is valid for.
CreateVerificationRequestCall:
title: CreateVerificationRequestCall
description: The request body when creating a verification.
required:
- phone_number
- verify_profile_id
type: object
properties:
phone_number:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
verify_profile_id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
type: string
format: uuid
description: The identifier of the associated Verify profile.
custom_code:
example: '43612'
type:
- string
- 'null'
description: Send a self-generated numeric code to the end-user
default: null
timeout_secs:
type: integer
example: 300
description: The number of seconds the verification code is valid for.
extension:
example: 1www2WABCDw9
type:
- string
- 'null'
description: 'Optional extension to dial after call is answered using DTMF digits. Valid digits are 0-9, A-D, *,
and #. Pauses can be added using w (0.5s) and W (1s).'
default: null
CreateVerificationRequestSMS:
title: CreateVerificationRequestSMS
description: The request body when creating a verification.
required:
- phone_number
- verify_profile_id
type: object
properties:
phone_number:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
verify_profile_id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
type: string
format: uuid
description: The identifier of the associated Verify profile.
custom_code:
example: '43612'
type:
- string
- 'null'
description: Send a self-generated numeric code to the end-user
default: null
timeout_secs:
type: integer
example: 300
description: The number of seconds the verification code is valid for.
CreateVerificationRequestWhatsapp:
title: CreateVerificationRequestWhatsapp
description: The request body when creating a WhatsApp verification.
required:
- phone_number
- verify_profile_id
type: object
properties:
phone_number:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
verify_profile_id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
type: string
format: uuid
description: The identifier of the associated Verify profile.
custom_code:
example: '43612'
type:
- string
- 'null'
description: Send a self-generated numeric code to the end-user
default: null
timeout_secs:
type: integer
example: 300
description: The number of seconds the verification code is valid for.
CreateVerificationResponse:
title: CreateVerifyVerificationResponse
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/Verification'
CreateVerifiedNumberResponse:
title: CreateVerifiedNumberResponse
type: object
properties:
phone_number:
example: '+15551234567'
type: string
verification_method:
example: sms
type: string
CreateVerifyProfileCallRequest:
title: CreateVerifyProfileCallRequest
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
CreateVerifyProfileSMSRequest:
title: CreateVerifyProfileSMSRequest
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
default: Telnyx
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
CreateVerifyProfileSettingsRequest:
title: CreateVerifyProfileSettingsRequest
type: object
properties:
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
CreateVerifyProfileSettingsWhatsAppRequest:
title: CreateVerifyProfileSettingsWhatsAppRequest
type: object
properties:
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
waba_id:
example: '1234567890'
type:
- string
- 'null'
description: Customer Meta WABA ID for Bring-Your-Own-WABA sending
default: null
sender_phone_number:
example: '+13035551234'
type:
- string
- 'null'
description: Phone number registered on the customer WABA to send OTPs from
default: null
template_id:
example: authentication_template_id
type:
- string
- 'null'
description: Customer pre-approved authentication template ID registered on Meta
default: null
CreatedAt:
title: Created At
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2020-02-02T22:25:27.521Z'
CreatedUserBundlesResponse:
title: CreatedUserBundlesResponse
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserBundle'
CreatedVerificationCodesResponse:
type: object
properties:
data:
type: array
items:
type: object
title: VerificationCodeResult
description: Verification code result response
required:
- phone_number
properties:
phone_number:
type: string
x-format: +E.164
description: Phone number for which the verification code was created
verification_code_id:
type: string
format: uuid
description: Unique identifier for the verification code
type:
type: string
enum:
- sms
- call
description: Type of verification method used
error:
type: string
description: Error message describing why the verification code creation failed
required:
- data
CredentialActive:
title: Credential Active
description: If the credential associated with this service is active.
type: boolean
default: false
example: true
CredentialConnection:
type: object
title: Credential Connection
properties:
id:
type: string
description: Identifies the type of resource.
example: '1293384261075731499'
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: credential_connection
active:
type: boolean
description: Defaults to true
conversation_persistence:
type: boolean
description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the
connection are transcribed, stored, and indexed. Defaults to false.
user_name:
type: string
description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric
values only (no spaces or special characters). At least one of the first 5 characters must be a letter.
example: myusername123
password:
type: string
description: The password to be used as part of the credentials. Must be 8 to 128 characters long. For primary accounts
created on or after September 8, 2026, this password is returned as `********`. The password is returned in full
on create, and on update only when that update changed the password. Accounts created before September 8, 2026
are unaffected.
example: my123secure456password789
created_at:
type: string
description: ISO-8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO-8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
type: string
sip_uri_calling_preference:
type: string
example: disabled
description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted)
then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also
choose to allow only calls that are originated on any Connections under your account (internal).
enum:
- disabled
- unrestricted
- internal
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON
true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled
and does not modify that setting. This API provisions the preference; call-processing behavior is implemented
separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/CredentialInbound'
outbound:
$ref: '#/components/schemas/CredentialOutbound'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: credential_connection
active: true
user_name: myusername123
password: my123secure456password789
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
anchorsite_override: Latency
connection_name: string
sip_uri_calling_preference: disabled
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
call_cost_in_webhooks: false
webhook_timeout_secs: 25
tags:
- tag1
- tag2
rtcp_settings:
port: rtp+1
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 15
shaken_stir_enabled: true
simultaneous_ringing: enabled
outbound:
call_parking_enabled: true
ani_override: string
ani_override_type: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: string
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
CredentialInbound:
type: object
title: Credential Inbound
example:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: enabled
properties:
ani_number_format:
type: string
enum:
- +E.164
- E.164
- +E.164-national
- E.164-national
default: E.164-national
description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound
phone calls.
dnis_number_format:
type: string
enum:
- +e164
- e164
- national
- sip_username
default: e164
codecs:
type: array
items:
type: string
description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal
account, in priority order. This only works when the Connection the number is assigned to uses Media Handling
mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.'
default:
- G722
- G711U
- G711A
- G729
- OPUS
- H.264
default_routing_method:
type: string
enum:
- sequential
- round-robin
description: Default routing method to be used when a number is associated with the connection. Must be one of the
routing method types or left blank, other values are not allowed.
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
isup_headers_enabled:
type: boolean
default: false
description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and
only when using TCP or TLS transport.)
prack_enabled:
type: boolean
description: Enable PRACK messages as defined in RFC3262.
default: false
sip_compact_headers_enabled:
type: boolean
description: Defaults to true.
default: true
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
minimum: 1
maximum: 600
default: 90
shaken_stir_enabled:
type: boolean
description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE
message of inbound calls, even when using UDP transport.
default: false
simultaneous_ringing:
type: string
description: When enabled, allows multiple devices to ring simultaneously on incoming calls.
default: disabled
enum:
- disabled
- enabled
CredentialOutbound:
type: object
title: Credential Outbound
example:
call_parking_enabled: true
ani_override: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: US
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
properties:
call_parking_enabled:
type:
- boolean
- 'null'
default: false
description: Forces all SIP calls originated on this connection to be "parked" instead of "bridged" to the destination
specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command
to define which action will be taken next.
ani_override:
type: string
description: Set a phone number as the ani_override value to override caller id number on outbound calls.
default: ''
ani_override_type:
type: string
enum:
- always
- normal
- emergency
description: Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.
default: always
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
instant_ringback_enabled:
type: boolean
default: true
description: When set, ringback will not wait for indication before sending ringback tone to calling party.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
localization:
type: string
default: US
description: A 2-character country code specifying the country whose national dialing rules should be used. For
example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank,
Telnyx will try US and GB dialing rules, in that order, by default.
example: US
t38_reinvite_source:
type: string
enum:
- telnyx
- customer
- disabled
- passthru
- caller-passthru
- callee-passthru
description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether
or not Telnyx sends a t.38 reinvite. By default, Telnyx will send the re-invite. If set to `customer`,
the caller is expected to send the t.38 reinvite.
default: telnyx
outbound_voice_profile_id:
$ref: '#/components/schemas/connections_OutboundVoiceProfileId'
Credentials:
description: Opaque credential token used to authenticate and authorize with storage provider.
type: string
example: OPAQUE_CREDENTIALS_TOKEN
CredentialsResponse:
type: object
title: CredentialsResponse
required:
- data
- connection_id
- record_type
properties:
data:
$ref: '#/components/schemas/CustomStorageConfiguration'
connection_id:
$ref: '#/components/schemas/ConnectionIdCredentials'
record_type:
$ref: '#/components/schemas/RecordType'
CsvDownload:
type: object
properties:
id:
type: string
example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
description: Identifies the resource.
readOnly: true
record_type:
type: string
example: csv_download
description: Identifies the type of the resource.
readOnly: true
url:
type: string
example: https://www.telnyx.com/sample/42587e44-3a3e-46de-9255-0c9a7a1d1ec7
description: The URL at which the CSV file can be retrieved.
status:
type: string
enum:
- pending
- complete
- failed
- expired
default: pending
example: pending
description: Indicates the completion level of the CSV report. Only complete CSV download requests will be able
to be retrieved.
example:
id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
record_type: csv_download
url: https://www.telnyx.com/sample/42587e44-3a3e-46de-9255-0c9a7a1d1ec7
status: pending
Cursor:
type: object
properties:
after:
type: string
description: Opaque identifier of next page.
example: v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI=
before:
type: string
description: Opaque identifier of previous page.
example: v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI=
CursorMeta:
type: object
required:
- page_size
- has_next
- has_previous
properties:
page_size:
type: integer
next_cursor:
type: string
description: Omitted when `has_next` is false.
previous_cursor:
type: string
description: Omitted when `has_previous` is false.
has_next:
type: boolean
has_previous:
type: boolean
CursorPaginationMeta:
type: object
title: Cursor Pagination Meta
properties:
cursors:
$ref: '#/components/schemas/Cursor'
total_items:
type: integer
example: 50
next:
type: string
description: Path to next page.
example: /v2/connections/1234567890/active_calls?page[after]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI=
previous:
type: string
description: Path to previous page.
example: /v2/connections/1234567890/active_calls?page[before]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI=
CustomSipHeader:
type: object
title: Custom SIP Header
required:
- name
- value
properties:
name:
description: The name of the header to add.
type: string
example: head_1
value:
description: The value of the header.
type: string
example: val_1
example:
name: head_1
value: val_1
CustomStorageConfiguration:
type: object
title: Custom Storage Configuration
required:
- backend
- configuration
properties:
backend:
type: string
enum:
- gcs
- s3
- s3-generic
- azure
example: gcs
configuration:
oneOf:
- $ref: '#/components/schemas/GCSConfigurationData'
- $ref: '#/components/schemas/S3ConfigurationData'
- $ref: '#/components/schemas/S3GenericConfigurationData'
- $ref: '#/components/schemas/AzureConfigurationData'
discriminator:
propertyName: backend
mapping:
gcs: '#/components/schemas/GCSConfigurationData'
s3: '#/components/schemas/S3ConfigurationData'
s3-generic: '#/components/schemas/S3GenericConfigurationData'
azure: '#/components/schemas/AzureConfigurationData'
CustomerServiceRecord:
type: object
properties:
id:
description: Uniquely identifies this customer service record
type: string
format: uuid
example: f1486bae-f067-460c-ad43-73a92848f902
readOnly: true
phone_number:
description: The phone number of the customer service record.
type: string
example: '+12065551212'
status:
description: The status of the customer service record
type: string
enum:
- pending
- completed
- failed
example: completed
error_message:
description: The error message in case status is `failed`. This field would be null in case of `pending` or `completed`
status.
type:
- string
- 'null'
example: CSR information not available.
result:
description: The result of the CSR request. This field would be null in case of `pending` or `failed` status.
type:
- object
- 'null'
properties:
carrier_name:
description: The name of the carrier that the customer service record is for.
type: string
example: ABC CARRIER, INC.
associated_phone_numbers:
description: The associated phone numbers of the customer service record.
type: array
items:
type: string
example: '+12065551212'
admin:
description: The admin of the customer service record.
type: object
properties:
name:
description: The name of the customer service record.
type: string
example: John Doe
billing_phone_number:
description: The billing phone number of the customer service record.
type: string
example: '+12065551212'
account_number:
description: The account number of the customer service record.
type: string
example: '1234567890'
authorized_person_name:
description: The authorized person name of the customer service record.
type: string
example: John Doe
address:
description: The address of the customer service record
type: object
properties:
administrative_area:
description: The state of the address
type: string
example: NY
locality:
description: The city of the address
type: string
example: New York
postal_code:
description: The zip code of the address
type: string
example: '10001'
street_address:
description: The street address
type: string
example: 123 Main St
full_address:
description: The full address
type: string
example: 123 Main St; New York; NY; 10001
webhook_url:
type: string
description: Callback URL to receive webhook notifications.
example: https://example.com/webhook
record_type:
type: string
example: customer_service_record
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
CustomerServiceRecordAdditionalData:
type: object
properties:
name:
description: The name of the administrator of CSR.
type: string
example: Entity Inc.
authorized_person_name:
description: The name of the authorized person.
type: string
example: John Doe
pin:
description: The PIN of the customer service record.
type: string
example: '1234'
account_number:
description: The account number of the customer service record.
type: string
example: '123456789'
customer_code:
description: The customer code of the customer service record.
type: string
example: '123456789'
address_line_1:
description: The first line of the address of the customer service record.
type: string
example: 123 Main St
city:
description: The city of the customer service record.
type: string
example: New York
state:
description: The state of the customer service record.
type: string
example: NY
maxLength: 2
pattern: ^[A-Z]{2}$
zip_code:
description: The zip code of the customer service record.
type: string
example: '10001'
maxLength: 5
pattern: ^\d{5}$
billing_phone_number:
description: The billing phone number of the customer service record.
type: string
example: '+12065551212'
pattern: ^\+1\d{10}$
CustomerServiceRecordPhoneNumberCoverage:
type: object
properties:
phone_number:
type: string
description: The phone number that is being verified.
example: '+12223334444'
has_csr_coverage:
type: boolean
description: Indicates whether the phone number is covered or not.
example: true
reason:
type: string
description: The reason why the phone number is not covered. Only returned if `has_csr_coverage` is false.
example: The phone number '+19999999999' is invalid.
additional_data_required:
type: array
description: Additional data required to perform CSR for the phone number. Only returned if `has_csr_coverage` is
true.
items:
type: string
enum:
- name
- authorized_person_name
- account_number
- customer_code
- pin
- address_line_1
- city
- state
- zip_code
- billing_phone_number
example: name
record_type:
type: string
description: Identifies the type of the resource.
example: customer_service_record_phone_number_coverage
DKIMStatus:
type: object
required:
- selector
- algorithm
- key_length
- active
- rotated_at
properties:
selector:
type: string
nullable: true
algorithm:
type: string
enum:
- rsa-sha256
- null
nullable: true
key_length:
type: integer
enum:
- 2048
- null
nullable: true
active:
type: boolean
rotated_at:
type: string
format: date-time
nullable: true
DNSRecord:
type: object
required:
- id
- purpose
- record_type
- host
- value
- required
- status
properties:
id:
type: string
format: uuid
purpose:
type: string
enum:
- ownership
- spf
- dkim
- dmarc
- mx
record_type:
type: string
enum:
- TXT
- MX
host:
type: string
value:
type: string
actual_value:
type: string
nullable: true
priority:
type: integer
nullable: true
required:
type: boolean
status:
type: string
enum:
- pending
- verified
- failed
- not_required
example:
id: 123e4567-e89b-12d3-a456-426614174001
purpose: ownership
record_type: TXT
host: _telnyx-email.example.com
value: telnyx-domain-verification=abc123
actual_value: null
priority: null
required: true
status: pending
DNSRecordListResponse:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/DNSRecord'
DTMFTool:
properties:
type:
type: string
enum:
- send_dtmf
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
send_dtmf:
type: object
additionalProperties: true
type: object
required:
- type
- send_dtmf
title: DTMFTool
DailySendLimitError:
type: object
description: Error envelope returned when the account's daily recipient quota is exhausted before message creation.
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 1
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- '10011'
title:
type: string
example: Too Many Requests
detail:
type: string
example: Daily send limit of 1000 recipients exceeded. The limit resets at midnight UTC.
DateTimeRFC2822:
type: string
format: date-time
example: '2023-08-11T19:12:11Z'
DecisionModelAnswer:
description: An answer whose type matches its question.
oneOf:
- $ref: '#/components/schemas/DecisionModelChoiceAnswer'
- $ref: '#/components/schemas/DecisionModelNoulAnswer'
- $ref: '#/components/schemas/DecisionModelScoreAnswer'
discriminator:
propertyName: type
mapping:
choice: '#/components/schemas/DecisionModelChoiceAnswer'
noul: '#/components/schemas/DecisionModelNoulAnswer'
score: '#/components/schemas/DecisionModelScoreAnswer'
DecisionModelChoiceAnswer:
type: object
description: A selected option and the distribution across all supplied option keys.
properties:
type:
type: string
description: Answer type.
enum:
- choice
choice:
type: string
description: The option key with the highest relative score. Ties favor the first option in request order.
probabilities:
$ref: '#/components/schemas/DecisionModelProbabilities'
confidence:
$ref: '#/components/schemas/DecisionModelConfidence'
required:
- type
- choice
- probabilities
- confidence
additionalProperties: false
example:
type: choice
choice: technical_support
probabilities:
billing: 0.0024719786572585446
technical_support: 0.9972674768333701
sales: 0.00026054450937119613
confidence: 0.9820522416354122
DecisionModelChoiceQuestion:
type: object
description: Select one of the supplied options.
properties:
type:
type: string
description: Question type.
enum:
- choice
instructions:
$ref: '#/components/schemas/DecisionModelContent'
description: Required instructions describing what to decide about the shared state.
criteria:
type: object
description: Between 2 and 64 option keys mapped to description strings or null. A null description uses the option
key as its text.
minProperties: 2
maxProperties: 64
additionalProperties:
type:
- string
- 'null'
required:
- type
- instructions
- criteria
additionalProperties: false
example:
type: choice
instructions: Choose the team that should handle this incident.
criteria:
billing: Payments and refunds
technical_support: Service faults and technical problems
sales: New purchases
DecisionModelConfidence:
type: number
description: 'Normalized entropy confidence: 1 - H(p) / ln(N), where H(p) = -sum(p * ln(p)) and N is the number of options.
Zero indicates a uniform distribution; one indicates concentration on one option. This is neither the winning probability
nor calibrated correctness.'
minimum: 0
maximum: 1
DecisionModelContent:
description: Text, a JSON object, or an array containing text-based context. Text-only conversation histories are supported;
image and audio inputs are not supported.
oneOf:
- type: string
- type: object
additionalProperties: true
- type: array
items: {}
DecisionModelError:
type: object
description: A decision model service error.
properties:
error:
type: object
description: Error details.
properties:
message:
type: string
description: Human-readable explanation of the failure.
required:
- message
additionalProperties: false
required:
- error
additionalProperties: false
DecisionModelNoulAnswer:
type: object
description: A yes/no score with no separate confidence or probabilities fields.
properties:
type:
type: string
description: Answer type.
enum:
- noul
noul:
type: number
description: Score of the positive outcome. Values near 1 favor yes; values near 0 favor no. This is a number, not
a Boolean, and is not calibrated correctness.
minimum: 0
maximum: 1
required:
- type
- noul
additionalProperties: false
example:
type: noul
noul: 0.9991959141264766
DecisionModelNoulCriteria:
type: object
description: Optional descriptions for the positive and negative outcomes. Descriptions must be strings.
properties:
'true':
type: string
description: Description of the positive outcome.
default: 'Yes'
'false':
type: string
description: Description of the negative outcome.
default: 'No'
required: []
additionalProperties: false
default:
'true': 'Yes'
'false': 'No'
DecisionModelNoulQuestion:
type: object
description: Evaluate a yes/no question. Omit criteria to use Yes and No descriptions.
properties:
type:
type: string
description: Question type.
enum:
- noul
instructions:
$ref: '#/components/schemas/DecisionModelContent'
description: Required instructions describing what to decide about the shared state.
criteria:
$ref: '#/components/schemas/DecisionModelNoulCriteria'
required:
- type
- instructions
additionalProperties: false
example:
type: noul
instructions: Does the message describe an active production incident?
DecisionModelProbabilities:
type: object
description: Relative scores normalized across the supplied options, summing approximately to 1. These are not calibrated
probabilities of correctness.
minProperties: 2
maxProperties: 64
additionalProperties:
type: number
minimum: 0
maximum: 1
DecisionModelQuestion:
description: A choice, yes/no, or ordered-score question.
oneOf:
- $ref: '#/components/schemas/DecisionModelChoiceQuestion'
- $ref: '#/components/schemas/DecisionModelNoulQuestion'
- $ref: '#/components/schemas/DecisionModelScoreQuestion'
discriminator:
propertyName: type
mapping:
choice: '#/components/schemas/DecisionModelChoiceQuestion'
noul: '#/components/schemas/DecisionModelNoulQuestion'
score: '#/components/schemas/DecisionModelScoreQuestion'
DecisionModelRequest:
type: object
description: Decision Models beta request. Choose a public model alias; omitted model defaults to telnyx/decision-flash.
Telnyx manages the underlying models behind these aliases.
properties:
model:
type: string
enum:
- telnyx/decision-flash
- telnyx/decision-pro
default: telnyx/decision-flash
description: Public model alias. telnyx/decision-flash offers the lowest cost and latency; telnyx/decision-pro supports
decisions that require long context, including inputs beyond Jev’s 32k per-decision limit. Applies to every question
in the request. Other values are rejected.
example: telnyx/decision-flash
state:
$ref: '#/components/schemas/DecisionModelContent'
description: Shared context evaluated by every question.
example: Our production calls are failing. Every customer is affected.
questions:
type: object
description: Between 1 and 64 named questions. Each key identifies the corresponding answer.
minProperties: 1
maxProperties: 64
additionalProperties:
$ref: '#/components/schemas/DecisionModelQuestion'
required:
- state
- questions
additionalProperties: false
example:
model: telnyx/decision-flash
state: Our production calls are failing. Every customer is affected.
questions:
team:
type: choice
instructions: Choose the team that should handle this incident.
criteria:
billing: Payments and refunds
technical_support: Service faults and technical problems
sales: New purchases
production_incident:
type: noul
instructions: Does the message describe an active production incident?
urgency:
type: score
instructions: Rate operational urgency.
criteria:
- Low
- Normal
- High
- Critical
DecisionModelResponse:
type: object
description: A complete synchronous evaluation. Answers are returned directly without a data wrapper.
properties:
model:
type: string
description: Public model alias used to evaluate the request. Returns telnyx/decision-flash when model was omitted.
The underlying model is managed by Telnyx.
readOnly: true
enum:
- telnyx/decision-flash
- telnyx/decision-pro
example: telnyx/decision-flash
answers:
type: object
description: Answers keyed by exactly the question IDs in the request. Each answer type matches its question.
minProperties: 1
maxProperties: 64
additionalProperties:
$ref: '#/components/schemas/DecisionModelAnswer'
usage:
$ref: '#/components/schemas/DecisionModelUsage'
required:
- model
- answers
- usage
additionalProperties: false
example:
model: telnyx/decision-flash
answers:
team:
type: choice
choice: technical_support
probabilities:
billing: 0.0024719786572585446
technical_support: 0.9972674768333701
sales: 0.00026054450937119613
confidence: 0.9820522416354122
production_incident:
type: noul
noul: 0.9991959141264766
urgency:
type: score
score: 2.9974242859177265
legend:
'0': Low
'1': Normal
'2': High
'3': Critical
probabilities:
'0': 0.0003348349100603869
'1': 3.529133987660637e-05
'2': 0.0015006266723396524
'3': 0.9981292470777234
confidence: 0.9894200002646713
usage:
input_tokens: 267
output_tokens: 4
DecisionModelScoreAnswer:
type: object
description: An expected rating over the ordered criteria.
properties:
type:
type: string
description: Answer type.
enum:
- score
score:
type: number
description: 'Expected zero-based criterion index: sum(index * probability). Ranges from 0 to N-1 for N criteria;
fractional values are valid.'
minimum: 0
maximum: 63
legend:
type: object
description: Criterion descriptions keyed by stringified zero-based indices, such as "0", "1", and "2".
minProperties: 2
maxProperties: 64
additionalProperties:
type: string
probabilities:
$ref: '#/components/schemas/DecisionModelProbabilities'
description: Relative scores keyed by the same stringified indices as legend.
confidence:
$ref: '#/components/schemas/DecisionModelConfidence'
required:
- type
- score
- legend
- probabilities
- confidence
additionalProperties: false
example:
type: score
score: 2.9974242859177265
legend:
'0': Low
'1': Normal
'2': High
'3': Critical
probabilities:
'0': 0.0003348349100603869
'1': 3.529133987660637e-05
'2': 0.0015006266723396524
'3': 0.9981292470777234
confidence: 0.9894200002646713
DecisionModelScoreQuestion:
type: object
description: Rate the state against an ordered rubric.
properties:
type:
type: string
description: Question type.
enum:
- score
instructions:
$ref: '#/components/schemas/DecisionModelContent'
description: Required instructions describing what to decide about the shared state.
criteria:
type: array
description: Between 2 and 64 description strings in ascending score order. Indices start at zero.
minItems: 2
maxItems: 64
items:
type: string
required:
- type
- instructions
- criteria
additionalProperties: false
example:
type: score
instructions: Rate operational urgency.
criteria:
- Low
- Normal
- High
- Critical
DecisionModelUsage:
type: object
description: Token usage for the completed evaluation.
properties:
input_tokens:
type: integer
minimum: 0
description: Input tokens processed, including shared-context preparation and question evaluation. This can exceed
the token count of the unique input text.
output_tokens:
type: integer
minimum: 0
description: Output tokens used for the evaluation, including shared-context preparation.
required:
- input_tokens
- output_tokens
additionalProperties: false
DedicatedIp:
type: object
description: A dedicated sending IP address owned by the account.
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- dedicated_ip
ip_address:
type: string
description: The allocated IPv4/IPv6 address.
ip_version:
type: string
enum:
- ipv4
- ipv6
pool_id:
type: string
format: uuid
nullable: true
region:
type: string
description: Region label of the allocated IP (for example, `ewr-nj1`).
status:
type: string
enum:
- provisioning
- warming_up
- active
- suspended
- released
description: 'Lifecycle status. `provisioning`: purchased and billed, carries no mail until `start_warmup`. `warming_up`:
warm-up ramp in progress. `active`: ramp complete. `suspended`: suspended by Telnyx; carries no mail and is still
billed. `released`: returned to Telnyx; carries no mail.'
warmup:
$ref: '#/components/schemas/DedicatedIpWarmup'
billing:
$ref: '#/components/schemas/DedicatedIpBilling'
provisioning_status:
type: string
enum:
- not_applicable
- pending_ptr
- pending_dns
- dns_confirmed
- dns_lost
description: Same value as `provisioning.dns_status`.
provisioning:
$ref: '#/components/schemas/DedicatedIpProvisioning'
ptr_hostname:
type: string
nullable: true
description: Telnyx-managed reverse DNS (PTR) hostname of the IP, in the form `mta-.msgtelnyx.com`. Also
used as the EHLO hostname when sending from the IP. Managed by Telnyx and cannot be changed through the API.
dns_confirmed_at:
type: string
format: date-time
nullable: true
description: When the PTR hostname was forward-confirmed (PTR → hostname → A record → this IP). The IP carries mail
only while this is set.
quarantine_until:
type: string
format: date-time
nullable: true
description: Set on release to 30 days after `released_at`. The address is not returned to stock before this time.
released_at:
type: string
format: date-time
nullable: true
description: When the IP was released. Null until release.
suspension_reason:
type: string
nullable: true
description: Reason Telnyx recorded when suspending the IP. Null unless `status` is `suspended`.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
DedicatedIpBilling:
type: object
description: Monthly recurring charge (MRC) state for the IP's current allocation.
properties:
status:
type: string
enum:
- not_started
- pending
- in_progress
- active
- stopping
- stopped
- stop_failed
- failed
description: '`not_started`: no charge recorded for the current allocation. `pending`: the charge is queued. `in_progress`:
the charge is being created. `active`: the MRC is active. `stopping`: release requested; the MRC stop is being
processed. `stopped`: the MRC has stopped. `stop_failed`: the MRC stop failed and the charge remains. `failed`:
the charge could not be created.'
charged:
type: boolean
description: True when `status` is `active`, `stopping`, or `stop_failed`. An IP carries mail only after its charge
has been created.
DedicatedIpCapacityErrorResponse:
type: object
description: 429 envelope with machine-readable capacity or waitlist meta.
properties:
errors:
type: array
items:
$ref: '#/components/schemas/email_Error'
meta:
$ref: '#/components/schemas/DedicatedIpCapacityMeta'
required:
- errors
- meta
DedicatedIpCapacityMeta:
type: object
properties:
capacity:
type: integer
nullable: true
used:
type: integer
nullable: true
remaining:
type: integer
nullable: true
retry_after_seconds:
type: integer
waitlist:
type: boolean
nullable: true
description: True when the request was recorded on the waitlist.
required:
- retry_after_seconds
DedicatedIpCreateRequest:
type: object
description: Optional purchase selectors. Each supplied field restricts which stock IP is allocated; neither field is
written to the IP. Omit the body or a field to apply no restriction for it. Other fields are ignored.
properties:
region:
type: string
enum:
- ewr-nj1
description: 'Allocate an IP in this region. Supported value: `ewr-nj1`. Any other value, including an empty string
or `null`, returns `422`.'
ip_version:
type: string
enum:
- ipv4
description: 'Allocate an IP of this address family. Supported value: `ipv4`. Any other value, including `ipv6`
or `null`, returns `422`.'
DedicatedIpDeleteRequest:
type: object
description: Optional release options. The same fields are accepted as query parameters.
properties:
force:
type: boolean
default: false
description: 'Set together with `drain: true` to release the last IP in a pool. Either flag alone has no effect.'
drain:
type: boolean
default: false
description: 'Set together with `force: true` to release the last IP in a pool. Acknowledges that mail routed to
the emptied pool is held until the pool has a sendable IP again.'
reason:
type: string
description: Free-text reason recorded with the release.
DedicatedIpListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DedicatedIp'
required:
- data
DedicatedIpProvisioning:
type: object
description: Read-only status of the Telnyx-managed PTR record. No customer action is required to complete it.
properties:
dns_status:
type: string
enum:
- not_applicable
- pending_ptr
- pending_dns
- dns_confirmed
- dns_lost
description: '`dns_confirmed`: the PTR is forward-confirmed and `dns_confirmed_at` is set. `pending_ptr`: the PTR
record is not yet in place. `pending_dns`: the PTR record is waiting for forward confirmation. `dns_lost`: a previously
confirmed PTR no longer confirms, or the PTR request was abandoned before it ever confirmed (`ptr_request_state`
is `abandoned`); the IP carries no mail until DNS is confirmed. `not_applicable`: the IP is released or has no
PTR record on file.'
ptr_request_state:
type: string
nullable: true
enum:
- pending
- pr_open
- merged
- confirmed
- failed
- abandoned
- null
description: 'State of the Telnyx PTR change: `pending`, `pr_open`, `merged`, `confirmed`, `failed`, or `abandoned`.
Informational.'
ptr_request_pr_url:
type: string
nullable: true
description: Reference to the Telnyx PTR change request, when one exists. Informational.
checklist:
type: object
properties:
ptr_requested:
type: boolean
ptr_authored:
type: boolean
ptr_merged:
type: boolean
forward_confirmed:
type: boolean
description: Informational progress flags for the Telnyx-managed PTR. They do not gate `start_warmup`; use `dns_status`
to check whether the IP can carry mail.
DedicatedIpShowResponse:
type: object
properties:
data:
$ref: '#/components/schemas/DedicatedIp'
required:
- data
DedicatedIpUpdateRequest:
type: object
description: 'Applies one change per request. `pool_id` takes precedence over warm-up changes: when it is present, the
IP moves to that pool (with `weight`, `force`, and `drain`) and other fields are ignored. Otherwise, use `warmup_paused`
or `warmup.paused`; a Boolean `warmup_paused` takes precedence. The PTR hostname is managed by Telnyx and cannot be
changed: when neither `pool_id` nor a warm-up field is present, a body that includes `ptr_hostname` (including `null`)
returns `422` and the IP is unchanged. A body with none of these fields returns the IP unchanged.'
properties:
pool_id:
type: string
format: uuid
description: Move the IP to this pool, replacing its current membership. Use the IP's current pool to change only
its weight. To take an IP out of a pool, use `DELETE /email/ip_pools/{id}/ips/{ip_id}`.
weight:
type: integer
minimum: 1
default: 100
description: Routing weight in the target pool. Used only with `pool_id`.
force:
type: boolean
default: false
description: 'Set together with `drain: true` to move the last IP out of its current pool. Used only with `pool_id`.'
drain:
type: boolean
default: false
description: 'Set together with `force: true` to move the last IP out of its current pool. Acknowledges that mail
routed to the emptied pool is held. Used only with `pool_id`.'
warmup_paused:
type: boolean
description: Pause (`true`) or resume (`false`) the warm-up ramp; equivalent to the `pause_warmup` and `resume_warmup`
actions. A Boolean value takes precedence over `warmup.paused`. When a pause field is present and `pool_id` is
absent, supplying neither pause field as a Boolean invokes resume.
warmup:
type: object
description: Alias for `warmup_paused`.
properties:
paused:
type: boolean
description: Pause (`true`) or resume (`false`) the warm-up ramp. Used only when `warmup_paused` is not a Boolean.
DedicatedIpWarmup:
type: object
description: Warmup ramp state for a dedicated IP.
properties:
started_at:
type: string
format: date-time
nullable: true
description: When `start_warmup` was called. Null before warm-up starts and after release.
progress:
type: integer
description: 'Ramp progress (0-100): the share of the 28 send-day schedule completed. Only UTC days on which the
IP sent mail count. Set to 100 when the ramp completes, automatically or through `complete_warmup`. On an `active`
IP this value is informational and can keep an earlier value after a suspension is lifted.'
minimum: 0
maximum: 100
daily_cap:
type: integer
nullable: true
minimum: 1
description: Daily cap of the current ramp stage. Null until the scheduler arms the first stage, and cleared when
the ramp completes, automatically or through `complete_warmup`. On an `active` IP this value is informational
and can keep an earlier stage cap after a suspension is lifted; it does not limit sending.
paused:
type: boolean
description: True while the ramp is paused.
paused_at:
type: string
format: date-time
nullable: true
description: When the ramp was paused. Null when not paused.
today:
type: object
nullable: true
description: Today's warmup allowance report card (current UTC day). Null outside the warmup window (before start_warmup,
after release/suspension). `active` IPs report the ramp-complete allowance, except as described for `cap`.
properties:
day:
type: string
format: date
description: The UTC day this snapshot describes (warmup caps reset at UTC midnight).
cap:
type: integer
nullable: true
description: 'The day''s allowance cap. Null when the ramp has not opened yet (day 0: the scheduler has not
armed a stage cap) — distinct from a spent day, which reports the cap with remaining 0. `active` IPs report
`100000000`, the ramp-complete cap; `complete_warmup` applies it to the current day immediately. A day''s
allowance created before the IP became `active` can keep its stored `cap` and `remaining` until the next first-attempt
send refreshes them.'
granted:
type: integer
description: First-attempt sends released from warmup hold so far today. Delivery retries never lease allowance
and are not counted.
remaining:
type: integer
nullable: true
description: Headroom left today. A queued send held by the daily cap is explained by remaining == 0; null mirrors
cap (ramp not open yet). On an `active` IP whose `cap` is below `100000000`, remaining == 0 is a stored allowance
and does not block the next eligible first-attempt send.
DeepgramEnglishTranscriptionLanguage:
type: string
enum:
- en
- en-US
- en-AU
- en-GB
- en-IN
- en-NZ
default: en
description: Language to transcribe. Deepgram's medical and phonecall models support English only.
DeepgramFluxConfig:
type: object
title: DeepgramFluxConfig
description: Deepgram Flux (English), a conversational speech recognition model with built-in end-of-turn detection.
`smart_format`, `utterance_end_ms`, `hints` and `keywords_boosting` do not apply to Flux.
properties:
transcription_engine:
type: string
enum:
- Deepgram
transcription_model:
type: string
enum:
- deepgram/flux
interim_results:
type: boolean
default: false
example: true
description: Whether to send also interim results. If set to false, only final results will be sent.
language:
type: string
enum:
- en
default: en
description: Language to transcribe. `deepgram/flux` supports English only.
keyterms:
type: array
description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported
on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`);
use `hints` on Nova-2.
items:
type: string
maxItems: 100
default: []
example:
- Telnyx
- LiveKit
- VoIP
additionalProperties: false
required:
- transcription_engine
- transcription_model
example:
transcription_engine: Deepgram
transcription_model: deepgram/flux
language: en
keyterms:
- Telnyx
- LiveKit
- VoIP
DeepgramFluxMultiConfig:
type: object
title: DeepgramFluxMultiConfig
description: Deepgram Flux multilingual, a conversational speech recognition model with built-in end-of-turn detection.
`smart_format`, `utterance_end_ms`, `hints` and `keywords_boosting` do not apply to Flux.
properties:
transcription_engine:
type: string
enum:
- Deepgram
transcription_model:
type: string
enum:
- deepgram/flux-multi
interim_results:
type: boolean
default: false
example: true
description: Whether to send also interim results. If set to false, only final results will be sent.
language:
$ref: '#/components/schemas/DeepgramFluxMultiTranscriptionLanguage'
keyterms:
type: array
description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported
on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`);
use `hints` on Nova-2.
items:
type: string
maxItems: 100
default: []
example:
- Telnyx
- LiveKit
- VoIP
additionalProperties: false
required:
- transcription_engine
- transcription_model
example:
transcription_engine: Deepgram
transcription_model: deepgram/flux-multi
language: es
keyterms:
- Telnyx
- LiveKit
- VoIP
DeepgramFluxMultiTranscriptionLanguage:
type: string
enum:
- en
- es
- fr
- de
- hi
- ru
- pt
- ja
- it
- nl
- auto
default: en
description: Language to transcribe. Flux-multi uses the language as a hint; `auto` lets Flux detect the language.
DeepgramNova2Config:
type: object
title: DeepgramNova2Config
properties:
transcription_engine:
type: string
enum:
- Deepgram
transcription_model:
type: string
enum:
- deepgram/nova-2
interim_results:
type: boolean
default: false
example: true
description: Whether to send also interim results. If set to false, only final results will be sent.
utterance_end_ms:
type: integer
default: 1000
example: 800
minimum: 0
maximum: 5000
description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
language:
$ref: '#/components/schemas/DeepgramNova2TranscriptionLanguage'
smart_format:
type: boolean
default: true
example: false
description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note:
Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a
smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.'
keywords_boosting:
type: object
description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for
specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom":
2, "krieger": 1}`.'
additionalProperties:
type: number
description: Boost intensifier for the keyword. Higher values increase recognition confidence.
default: null
example:
snuffleupagus: 5
systrom: 2
krieger: 1
hints:
type: array
description: Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted
biasing, use `keywords_boosting` instead. Supported on Nova-2 models only (`deepgram/nova-2`, `deepgram/nova-2-medical`,
`deepgram/nova-2-phonecall`); use `keyterms` on Nova-3 and Flux.
items:
type: string
maxItems: 100
default: []
example:
- Telnyx
- LiveKit
- VoIP
additionalProperties: false
required:
- transcription_engine
- transcription_model
example:
transcription_engine: Deepgram
transcription_model: deepgram/nova-2
language: en
smart_format: false
hints:
- Telnyx
- LiveKit
- VoIP
keywords_boosting:
snuffleupagus: 5
systrom: 2
krieger: 1
DeepgramNova2SpecialtyConfig:
type: object
title: DeepgramNova2SpecialtyConfig
properties:
transcription_engine:
type: string
enum:
- Deepgram
transcription_model:
type: string
enum:
- deepgram/nova-2-medical
- deepgram/nova-2-phonecall
interim_results:
type: boolean
default: false
example: true
description: Whether to send also interim results. If set to false, only final results will be sent.
utterance_end_ms:
type: integer
default: 1000
example: 800
minimum: 0
maximum: 5000
description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
language:
$ref: '#/components/schemas/DeepgramEnglishTranscriptionLanguage'
smart_format:
type: boolean
default: true
example: false
description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note:
Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a
smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.'
keywords_boosting:
type: object
description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for
specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom":
2, "krieger": 1}`.'
additionalProperties:
type: number
description: Boost intensifier for the keyword. Higher values increase recognition confidence.
default: null
example:
snuffleupagus: 5
systrom: 2
krieger: 1
hints:
type: array
description: Nova-2 keyword biasing without intensifiers. Up to 100 terms to bias recognition toward. For weighted
biasing, use `keywords_boosting` instead. Supported on Nova-2 models only (`deepgram/nova-2`, `deepgram/nova-2-medical`,
`deepgram/nova-2-phonecall`); use `keyterms` on Nova-3 and Flux.
items:
type: string
maxItems: 100
default: []
example:
- Telnyx
- LiveKit
- VoIP
additionalProperties: false
required:
- transcription_engine
- transcription_model
example:
transcription_engine: Deepgram
transcription_model: deepgram/nova-2-medical
language: en-US
smart_format: false
hints:
- Telnyx
- LiveKit
- VoIP
keywords_boosting:
snuffleupagus: 5
systrom: 2
krieger: 1
description: 'Deepgram Nova-2 specialty models: `deepgram/nova-2-medical` (medical vocabulary) and `deepgram/nova-2-phonecall`
(low-bandwidth phone audio). English only.'
DeepgramNova2TranscriptionLanguage:
title: Deepgram nova-2 transcription engine list of languages
type: string
description: Language to use for speech recognition with nova-2 model
example: en
default: en
enum:
- bg
- ca
- zh
- zh-CN
- zh-Hans
- zh-TW
- zh-Hant
- zh-HK
- cs
- da
- da-DK
- nl
- en
- en-US
- en-AU
- en-GB
- en-NZ
- en-IN
- et
- fi
- nl-BE
- fr
- fr-CA
- de
- de-CH
- el
- hi
- hu
- id
- it
- ja
- ko
- ko-KR
- lv
- lt
- ms
- 'no'
- pl
- pt
- pt-BR
- pt-PT
- ro
- ru
- sk
- es
- es-419
- sv
- sv-SE
- th
- th-TH
- tr
- uk
- vi
- auto_detect
DeepgramNova3Config:
type: object
title: DeepgramNova3Config
properties:
transcription_engine:
type: string
enum:
- Deepgram
transcription_model:
type: string
enum:
- deepgram/nova-3
interim_results:
type: boolean
default: false
example: true
description: Whether to send also interim results. If set to false, only final results will be sent.
utterance_end_ms:
type: integer
default: 1000
example: 800
minimum: 0
maximum: 5000
description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
language:
$ref: '#/components/schemas/DeepgramNova3TranscriptionLanguage'
smart_format:
type: boolean
default: true
example: false
description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note:
Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a
smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.'
keywords_boosting:
type: object
description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for
specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom":
2, "krieger": 1}`.'
additionalProperties:
type: number
description: Boost intensifier for the keyword. Higher values increase recognition confidence.
default: null
example:
snuffleupagus: 5
systrom: 2
krieger: 1
keyterms:
type: array
description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported
on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`);
use `hints` on Nova-2.
items:
type: string
maxItems: 100
default: []
example:
- Telnyx
- LiveKit
- VoIP
additionalProperties: false
required:
- transcription_engine
- transcription_model
example:
transcription_engine: Deepgram
transcription_model: deepgram/nova-3
language: en
smart_format: false
keyterms:
- Telnyx
- LiveKit
- VoIP
keywords_boosting:
snuffleupagus: 5
systrom: 2
krieger: 1
DeepgramNova3MedicalConfig:
type: object
title: DeepgramNova3MedicalConfig
properties:
transcription_engine:
type: string
enum:
- Deepgram
transcription_model:
type: string
enum:
- deepgram/nova-3-medical
interim_results:
type: boolean
default: false
example: true
description: Whether to send also interim results. If set to false, only final results will be sent.
utterance_end_ms:
type: integer
default: 1000
example: 800
minimum: 0
maximum: 5000
description: Number of milliseconds of silence to consider an utterance ended. Ranges from 0 to 5000 ms.
language:
$ref: '#/components/schemas/DeepgramEnglishTranscriptionLanguage'
smart_format:
type: boolean
default: true
example: false
description: 'Enable Deepgram''s smart formatting (capitalization, punctuation, and digit normalization). Note:
Telnyx defaults this to `true`, overriding Deepgram''s underlying default of `false` — omit the field to get a
smart-formatted transcript, or set it to `false` to receive the raw lowercase transcript without punctuation.'
keywords_boosting:
type: object
description: 'Keywords and their respective intensifiers (boosting values) to improve transcription accuracy for
specific words or phrases. The intensifier should be a numeric value. Example: `{"snuffleupagus": 5, "systrom":
2, "krieger": 1}`.'
additionalProperties:
type: number
description: Boost intensifier for the keyword. Higher values increase recognition confidence.
default: null
example:
snuffleupagus: 5
systrom: 2
krieger: 1
keyterms:
type: array
description: Keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Supported
on Nova-3 and Flux models (`deepgram/nova-3`, `deepgram/nova-3-medical`, `deepgram/flux`, `deepgram/flux-multi`);
use `hints` on Nova-2.
items:
type: string
maxItems: 100
default: []
example:
- Telnyx
- LiveKit
- VoIP
additionalProperties: false
required:
- transcription_engine
- transcription_model
example:
transcription_engine: Deepgram
transcription_model: deepgram/nova-3-medical
language: en-US
smart_format: false
keyterms:
- Telnyx
- LiveKit
- VoIP
keywords_boosting:
snuffleupagus: 5
systrom: 2
krieger: 1
description: Deepgram Nova-3 medical model, tuned for medical vocabulary. English only.
DeepgramNova3TranscriptionLanguage:
title: Deepgram nova-3 transcription engine list of languages
type: string
description: Language to use for speech recognition with nova-3 model
example: en
default: en
enum:
- en
- en-US
- en-AU
- en-GB
- en-IN
- en-NZ
- de
- nl
- sv
- sv-SE
- da
- da-DK
- es
- es-419
- fr
- fr-CA
- pt
- pt-BR
- pt-PT
- auto_detect
DefaultCondition:
properties:
type:
type: string
const: default
title: Type
type: object
required:
- type
title: DefaultCondition
description: 'Fallback edge condition: fires only when no other edge''s condition is true.
Evaluated after every conditioned (`llm` / `expression`) edge regardless
of declaration order, so it routes the flow whenever none of the node''s
other outgoing edges match. Valid **only** on edges leaving a `tool` or
`speak` node, where the deterministic step auto-advances and must always
have somewhere to go. A tool/speak node with any outgoing edge is required
to carry exactly one `default` edge so it never dead-ends; a tool/speak
node with no outgoing edges is a valid terminal step. Carries no parameters.'
example:
type: default
DefaultGateway:
allOf:
- $ref: '#/components/schemas/Record'
- type: object
title: DefaultGateway
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: default_gateway
network_id:
type: string
format: uuid
description: Network ID.
readOnly: true
example: e66c496d-4a85-423b-8b2a-8e63fac20320
wireguard_peer_id:
type: string
format: uuid
description: Wireguard peer ID.
example: e66c496d-4a85-423b-8b2a-8e63fac20320
status:
$ref: '#/components/schemas/InterfaceStatus'
DelegationSettings:
type: object
title: DelegationSettings
description: Splits the conversation between a frontend model that talks to the caller and a backend model that does
the work. On the GPT-Live route the frontend model cannot call tools at all — when it needs something done it raises
a delegation and waits. On the chat completion route the frontend keeps a single `delegate` tool that returns immediately,
so the conversation carries on while the backend works. Either way the backend's answer is spoken as commentary or
kept as silent context, depending on `speak_results`. Beta feature.
properties:
enabled:
type: boolean
default: true
description: 'Whether the assistant delegates work to a backend model. Defaults to `true`: a GPT-Live assistant
with delegation disabled can hold a conversation but can never look anything up or run a tool.'
mode:
type: string
enum:
- telnyx
- client
default: telnyx
description: 'Who answers a delegation. `telnyx` runs the backend model on Telnyx with the assistant''s own tools,
MCP servers and observability. `client` relays the delegation to a server you host over the WebSocket configured
in `websocket_settings`: Telnyx sends a `session.delegation.created` frame and waits for your `session.delegation.completed`
answer. That answer is text only, since the socket offers no tool vocabulary. If no socket is connected the delegation
is refused and the assistant tells the caller it cannot look things up right now. Defaults to `telnyx`.'
model:
type: string
description: The backend model that answers delegations. Must be a model available for AI Assistants. When enabling
`telnyx` delegation, explicitly set this field or `external_llm.model`; a configuration without either backend
model is rejected. Only applies when `mode` is `telnyx`.
llm_api_key_ref:
type: string
description: Integration secret identifier for the backend model's API key. Required for models from providers other
than Telnyx, OpenAI and Anthropic. A raw `api_key` is rejected rather than ignored, so that no plaintext credential
is stored on the assistant.
instructions:
type: string
description: Extra instructions for the backend model, in addition to the assistant's own. Use this for the business
rules the backend needs and the talking model does not.
speak_results:
type: boolean
default: true
description: Whether the backend's answer is spoken to the caller. When `true` the result is appended as commentary
and paraphrased aloud; when `false` it is kept as silent context that informs later answers without being read
out. Defaults to `true`.
external_llm:
allOf:
- $ref: '#/components/schemas/ExternalLLM'
description: Run the backend on your own OpenAI-compatible endpoint instead of a Telnyx-hosted model. As above,
a raw `api_key` here is rejected — reference an integration secret with `external_llm.llm_api_key_ref` instead.
DeletedAssistant:
allOf:
- $ref: '#/components/schemas/inference-embedding_Assistant'
- properties:
deleted_at:
type: string
format: date-time
title: Deleted At
description: Timestamp of the soft delete.
permanently_deleted_at:
type: string
format: date-time
title: Permanently Deleted At
description: Point after which the assistant is permanently deleted automatically and can no longer be restored.
required:
- deleted_at
- permanently_deleted_at
type: object
description: 'A soft-deleted assistant in the Recently Deleted list: the full assistant configuration plus deletion
metadata.'
DetailRecord:
type: object
description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records
oneOf:
- $ref: '#/components/schemas/MessageDetailRecord'
title: Message
- $ref: '#/components/schemas/ConferenceDetailRecord'
title: Conference
- $ref: '#/components/schemas/ConferenceParticipantDetailRecord'
title: Conference Participant
- $ref: '#/components/schemas/AmdDetailRecord'
title: AMD
- $ref: '#/components/schemas/VerifyDetailRecord'
title: Verify 2FA
- $ref: '#/components/schemas/SimCardUsageDetailRecord'
title: Sim Card Usage
- $ref: '#/components/schemas/MediaStorageDetailRecord'
title: Media Storage
required:
- record_type
discriminator:
propertyName: record_type
DetailRecordsSearchResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/DetailRecord'
meta:
$ref: '#/components/schemas/detail-records_PaginationMeta'
DeveloperMessage:
type: object
title: Developer Message
description: Developer-provided instructions that the model should follow, regardless of messages sent by the user.
properties:
role:
description: The role of the messages author, in this case developer.
type: string
enum:
- developer
content:
description: The contents of the developer message.
type: string
metadata:
$ref: '#/components/schemas/MessageMetadata'
required:
- role
- content
example:
role: developer
content: Get the user's favorite color
DialConferenceParticipantRequest:
type: object
title: Create Conference Participant Request
properties:
Beep:
description: Whether to play a notification beep to the conference when the participant enters and exits.
example: onExit
type: string
enum:
- 'true'
- 'false'
- onEnter
- onExit
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the call.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
type: string
enum:
- GET
- POST
StatusCallbackEvent:
description: 'The changes to the call''s state that should generate a call to `StatusCallback`. Can be: `initiated`,
`ringing`, `answered`, and `completed`. Separate multiple values with a space. The default value is `completed`.'
example: answered completed
type: string
To:
description: The phone number of the called party. Phone numbers are formatted with a `+` and country code.
example: '+16175551212'
type: string
From:
description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country
code.
example: '+16175551212'
type: string
Timeout:
description: The number of seconds that we should allow the phone to ring before assuming there is no answer. Can
be an integer between 5 and 120, inclusive. The default value is 30.
example: 30
type: integer
x-stainless-param: timeout_seconds
Muted:
description: Whether the participant should be muted.
example: true
type: boolean
StartConferenceOnEnter:
description: Whether to start the conference when the participant enters. Defaults to `true`.
example: false
type: boolean
EndConferenceOnExit:
description: Whether to end the conference when the participant leaves. Defaults to `false`.
example: true
type: boolean
Label:
description: A unique label for the participant that will be added to the conference. The label can be used to reference
the participant for updates via the TeXML REST API.
example: customer
type: string
EarlyMedia:
description: Whether participant shall be bridged to conference before the participant answers (from early media
if available). Defaults to `false`.
example: true
type: boolean
default: false
ConferenceStatusCallback:
description: The URL the conference callbacks will be sent to.
example: https://example.com/conference_status_callback
type: string
ConferenceStatusCallbackMethod:
description: HTTP request type used for `ConferenceStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
ConferenceStatusCallbackEvent:
description: 'The changes to the conference''s state that should generate a call to `ConferenceStatusCallback`.
Can be: `start`, `end`, `join` and `leave`. Separate multiple values with a space. By default no callbacks are
sent.'
example: start end join leave
type: string
WaitUrl:
description: The URL to call for an audio file to play while the participant is waiting for the conference to start.
example: https://www.example.com/wait_music.mp3
type: string
MaxParticipants:
description: The maximum number of participants in the conference. Can be a positive integer from 2 to 800. The
default value is 250.
example: 30
type: integer
Coaching:
description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given.
example: false
type: boolean
CallSidToCoach:
description: The SID of the participant who is being coached. The participant being coached is the only participant
who can hear the participant who is coaching.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
type: string
CallerId:
description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number).
The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special
characters. If ommited, the display name will be the same as the number in the `From` field.
example: Info
type: string
TimeLimit:
description: The maximum duration of the call in seconds.
example: 30
type: integer
MachineDetection:
description: Whether to detect if a human or an answering machine picked up the call. Use `Enable` if you would
like to ne notified as soon as the called party is identified. Use `DetectMessageEnd`, if you would like to leave
a message on an answering machine.
example: Enable
type: string
enum:
- Enable
- DetectMessageEnd
MachineDetectionTimeout:
description: How long answering machine detection should go on for before sending an `Unknown` result. Given in
milliseconds.
example: 1000
type: integer
MachineDetectionSpeechThreshold:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored
when `premium` detection is used.
example: 2000
default: 3500
type: integer
MachineDetectionSpeechEndThreshold:
description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when
`premium` detection is used.
example: 2000
default: 800
type: integer
MachineDetectionSilenceTimeout:
description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium`
detection is used.
example: 2000
default: 3500
type: integer
MachineDetectionBeepProfile:
description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors
to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default
profile. Only used when MachineDetection is enabled.
example: freq_only
default: both
type: string
enum:
- both
- freq_only
MachineDetectionBeepMinFrequency:
description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes
North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile
is in use. Only used when MachineDetection is enabled.
type: integer
example: 550
format: int32
minimum: 200
maximum: 4000
MachineDetectionBeepMaxFrequency:
description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection
is enabled.
type: integer
example: 2000
format: int32
minimum: 200
maximum: 4000
MachineDetectionBeepMinToneDuration:
description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such
as call-progress blips. Only used when MachineDetection is enabled.
type: integer
example: 300
format: int32
minimum: 50
maximum: 5000
MachineDetectionBeepSpectralConfirmation:
description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used
when MachineDetection is enabled.
type: boolean
example: true
MachineDetectionBeepSpectralWindow:
description: Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled.
type: integer
example: 100
format: int32
minimum: 20
maximum: 1000
MachineDetectionBeepSpectralMinPurity:
description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed
tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled.
type: number
example: 0.8
minimum: 0
maximum: 1
MachineDetectionBeepSpectralRejectFaxCng:
description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection
is enabled.
type: boolean
example: true
AmdStatusCallback:
description: The URL the result of answering machine detection will be sent to.
example: https://www.example.com/amd_result
type: string
AmdStatusCallbackMethod:
description: HTTP request type used for `AmdStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
ApplicationSid:
description: The SID of the TeXML application that will handle the new participant's call. Required unless joining
an existing conference by its ConferenceSid.
example: '1846572522338780702'
type: string
CancelPlaybackOnMachineDetection:
description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`.
default: true
example: false
type: boolean
CancelPlaybackOnDetectMessageEnd:
description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`.
default: true
example: false
type: boolean
PreferredCodecs:
description: The list of comma-separated codecs to be offered on a call.
example: PCMA,PCMU
type: string
Record:
description: Whether to record the entire participant's call leg. Defaults to `false`.
example: false
type: boolean
RecordingChannels:
description: The number of channels in the final recording. Defaults to `mono`.
example: dual
type: string
enum:
- mono
- dual
RecordingStatusCallback:
description: The URL the recording callbacks will be sent to.
example: https://example.com/recording_status_callback
type: string
RecordingStatusCallbackMethod:
description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can
be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
SipAuthPassword:
description: The password to use for SIP authentication.
example: '1234'
type: string
SipAuthUsername:
description: The username to use for SIP authentication.
example: user
type: string
Trim:
description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
ConferenceRecord:
description: Whether to record the conference the participant is joining. Defualts to `do-not-record`. The boolean
values `true` and `false` are synonymous with `record-from-start` and `do-not-record` respectively.
example: record-from-start
type: string
enum:
- 'true'
- 'false'
- record-from-start
- do-not-record
ConferenceRecordingStatusCallback:
description: The URL the conference recording callbacks will be sent to.
example: https://example.com/conference_recording_status_callback
type: string
ConferenceRecordingStatusCallbackMethod:
description: HTTP request type used for `ConferenceRecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
ConferenceRecordingStatusCallbackEvent:
description: 'The changes to the conference recording''s state that should generate a call to `RecoridngStatusCallback`.
Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.
`failed` and `absent` are synonymous.'
example: in-progress completed failed absent
type: string
ConferenceRecordingTimeout:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. Please note that the transcription is used to detect silence
and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite)
example: 5
type: integer
default: 0
ConferenceTrim:
description: Whether to trim any leading and trailing silence from the conference recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
CustomHeaders:
description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value'
properties.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom header
value:
type: string
description: The value of the custom header
required:
- name
- value
example:
- name: X-Custom-Header
value: custom-value
example:
To: '+12065550100'
From: '+12065550200'
DialMetric:
type: object
title: Dial Metrics Bucket
description: Dial counts and rates for one region in one time bucket. One record per region per bucket.
properties:
record_type:
type: string
enum:
- dial_metric
example: dial_metric
region:
type: string
description: Region where the dials were handled. Current values are `us`, `eu`, `australia`, `middle_east`, `canada`
and `india`. New values can be added, so clients must tolerate values not listed here. Buckets of different regions
are separate records.
example: us
start_time:
type: string
format: date-time
description: Start of the bucket (inclusive), UTC.
example: '2026-09-29T12:00:00.000Z'
end_time:
type: string
format: date-time
description: End of the bucket (exclusive), UTC. Five seconds, one minute or one hour after `start_time`, depending
on `granularity`.
example: '2026-09-29T13:00:00.000Z'
dials:
type: object
description: Dial attempt counts in the bucket.
properties:
total:
type: integer
minimum: 0
description: 'All dial attempts, rejected ones included: accepted plus every rejected count.'
example: 85600
accepted:
type: integer
minimum: 0
description: Dial attempts that were not rejected by a limit.
example: 85240
rejected:
type: object
description: Dial attempts rejected by a limit.
properties:
dps_limit:
type: integer
minimum: 0
description: Rejected by the dials-per-second limit.
example: 360
hourly_limit:
type: integer
minimum: 0
description: Rejected by an hourly limit.
example: 0
daily_limit:
type: integer
minimum: 0
description: Rejected by a daily limit.
example: 0
average_dps:
type: number
description: '`dials.total` divided by the bucket duration in seconds, rounded to 4 decimal places. Counts every
dial attempt, rejected ones included.'
example: 23.7778
peak_dps:
type: number
description: Dials per second, rounded to 4 decimal places, in the busiest 5-second window of the bucket, summed
across all call-processing nodes of the region. Counts every dial attempt, rejected ones included, so `peak_dps`
above `dps_limit` is expected when dials were rejected. For `granularity=second` it equals `average_dps`.
example: 104.0
dps_limit:
type:
- integer
- 'null'
description: DPS limit in force during the busiest 5-second window, so it compares directly with `peak_dps`. `null`
means unlimited. Enforcement near the limit is approximate; `dials.rejected.dps_limit` is the authoritative signal
that the limit was reached.
example: 100
DialMetricsListMeta:
type: object
title: Dial Metrics List Meta
properties:
granularity:
type: string
enum:
- second
- minute
- hour
description: Echo of the requested granularity.
example: hour
start_time:
type: string
format: date-time
description: 'Start of the range actually used: the requested `start_time`, or the start of the retention window
when the requested value is older.'
example: '2026-09-29T12:00:00.000Z'
end_time:
type: string
format: date-time
description: Echo of the requested `end_time`.
example: '2026-09-29T14:00:00.000Z'
cursors:
type: object
description: Empty on the last page. When `page[after]` matched no records, the page is empty and `after` and `before`
both echo the given cursor.
properties:
after:
type: string
description: Opaque cursor for the next page. Pass it as `page[after]`.
example: MTc5MDY4NjgwMDpldQ
before:
type: string
description: 'Present only on an empty page for a cursor that matched nothing: echoes that cursor.'
example: MTc5MDY4MzIwMDp1cw
next:
type: string
description: Path to the next page, repeating this request's parameters. Absent on the last page.
example: /v2/dial_metrics?end_time=2026-09-29T14%3A00%3A00.000Z&granularity=hour&page%5Bafter%5D=MTc5MDY4NjgwMDpldQ&page%5Blimit%5D=2&sort=-start_time&start_time=2026-09-29T12%3A00%3A00.000Z
sort:
type: string
enum:
- -start_time
- start_time
description: Echo of the applied sort order.
example: -start_time
DialogflowConfig:
type: object
title: Dialogflow Config
properties:
analyze_sentiment:
description: Enable sentiment analysis from Dialogflow.
type: boolean
example: true
default: false
partial_automated_agent_reply:
description: Enable partial automated agent reply from Dialogflow.
type: boolean
example: true
default: false
DialogflowConnection:
type: object
title: Dialogflow Connection Params
required:
- service_account
properties:
service_account:
description: The JSON map to connect your Dialoglow account.
type: object
additionalProperties: true
dialogflow_api:
description: Determine which Dialogflow will be used.
type: string
enum:
- cx
- es
example: cx
default: es
conversation_profile_id:
description: The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow CX,
this param is required)
type: string
example: a-VMHLWzTmKjiJw5S6O0-w
location:
description: The region of your agent is. (If you use Dialogflow CX, this param is required)
type: string
example: global
environment:
description: Which Dialogflow environment will be used.
type: string
example: development
example:
service_account:
type: service_account
project_id: your-project-id
private_key_id: your-private-key
private_key: '-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----'
client_email: example@example.com
client_id: your-client-id
auth_uri: https://accounts.google.com/o/oauth2/auth
token_uri: https://oauth2.googleapis.com/token
auth_provider_x509_cert_url: https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url: https://www.googleapis.com/robot/v1/metadata/x509/example%40example.iam.gserviceaccount.com
dialogflow_api: cx
conversation_profile_id: a-VMHLWzTmKjiJw5S6O0-w
location: global
environment: development
DialogflowConnectionResponse:
type: object
title: Dialogflow Connection Response
required:
- data
properties:
data:
type: object
title: Dialogflow Connection
properties:
record_type:
type: string
example: dialogflow_connections
connection_id:
type: string
example: '1234541231'
description: Uniquely identifies a Telnyx application (Call Control).
conversation_profile_id:
type: string
description: The id of a configured conversation profile on your Dialogflow account. (If you use Dialogflow
CX, this param is required)
example: a-VMHLWzTmKjiJw5S6O0-w
environment:
type: string
description: Which Dialogflow environment will be used.
example: development
service_account:
type: string
description: The JSON map to connect your Dialoglow account.
example: '****'
Dir:
type: object
properties:
id:
type: string
format: uuid
example: 16635d38-75a6-4481-82e8-69af60e05011
readOnly: true
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
display_name:
type: string
example: Acme Plumbing
reselling:
type: boolean
example: false
certify_brand_is_accurate:
type: boolean
example: true
certify_no_shaft_content:
type: boolean
example: true
certify_ip_ownership:
type: boolean
example: true
authorizer_name:
type: string
nullable: true
example: Sam Owner
authorizer_email:
type: string
format: email
nullable: true
example: sam@acmeplumbing.example.com
logo_url:
type: string
format: uri
nullable: true
example: https://acmeplumbing.example.com/logo-256.bmp
call_reasons:
type: array
items:
$ref: '#/components/schemas/CallReason'
documents:
type: array
items:
$ref: '#/components/schemas/Document'
nullable: true
status:
$ref: '#/components/schemas/DirStatus'
rejection_reasons:
type: array
items:
$ref: '#/components/schemas/RejectionReason'
nullable: true
description: Populated when `status` is `rejected`; cleared on `/submit` or successful approval.
rejected_at:
type: string
format: date-time
nullable: true
readOnly: true
created_at:
type: string
format: date-time
example: '2026-04-26T18:06:51.940749Z'
readOnly: true
updated_at:
type: string
format: date-time
example: '2026-04-26T18:09:24.785211Z'
readOnly: true
submitted_at:
type: string
format: date-time
nullable: true
example: '2026-04-26T18:07:03.716411Z'
readOnly: true
verified_at:
type: string
format: date-time
nullable: true
example: '2026-04-26T18:07:29.537926Z'
readOnly: true
expiring_at:
type: string
format: date-time
nullable: true
example: '2027-04-26T18:07:29.537981Z'
readOnly: true
delete_requested_at:
type: string
format: date-time
nullable: true
description: When deletion was requested. Set once the DIR enters `delete_requested`; `null` otherwise.
example: '2026-04-27T09:12:44.201820Z'
readOnly: true
webhook_url:
type: string
format: uri
nullable: true
description: '`https://` URL that receives webhook notifications for this DIR''s compliance-review outcomes. `null`
when not subscribed.'
example: https://acmehealthcare.example.com/webhooks/branded-calling
DirComment:
type: object
properties:
id:
type: string
format: uuid
example: 30bbd13c-1f3a-47c0-8fa6-718835917b2f
readOnly: true
entity_type:
type: string
enum:
- dir
description: Resource the comment is attached to. Always `dir` on this endpoint.
example: dir
readOnly: true
content:
type: string
example: Please re-upload a clearer scan of the certificate.
visibility:
type: string
enum:
- customer
description: Always `customer` on this endpoint - internal-only comments are filtered out.
example: customer
readOnly: true
author_role:
type: string
enum:
- customer
- admin
description: Who wrote the comment. `admin` covers the Telnyx vetting team.
example: customer
readOnly: true
author_name:
type: string
nullable: true
description: Display name of the author. May be `null`.
example: null
readOnly: true
comment_type:
$ref: '#/components/schemas/CommentType'
created_at:
type: string
format: date-time
example: '2026-04-27T00:42:44.305835Z'
readOnly: true
DirCommentCreateRequest:
type: object
required:
- content
description: Customer-facing comment body. The server forces `comment_type=customer_inquiry`, `visibility=customer`,
and `author_role=customer`; clients cannot override these. `author_name` is dropped to prevent admin-impersonation.
properties:
content:
type: string
minLength: 1
maxLength: 5000
description: Comment body. 1–5000 characters.
example: Re-uploaded the logo as a 256×256 BMP. Please re-review.
parent_comment_id:
type: string
format: uuid
description: Optional parent comment id to thread this reply under.
DirCreateRequest:
type: object
required:
- display_name
- certify_brand_is_accurate
- certify_no_shaft_content
- certify_ip_ownership
- authorizer_name
- authorizer_email
- call_reasons
properties:
display_name:
type: string
minLength: 1
maxLength: 35
description: Name shown to call recipients. No emoji; not whitespace-only.
example: Acme Plumbing
reselling:
type: boolean
description: Set to true if your organization places calls on behalf of other enterprises (BPO/reseller).
default: false
example: false
certify_brand_is_accurate:
type: boolean
description: Certification that the DIR information is accurate. Must be `true` for the DIR to be submitted for
vetting.
example: true
enum:
- true
certify_no_shaft_content:
type: boolean
description: Must be `true`. Confirms this DIR is not used for SHAFT content (Sex, Hate, Alcohol, Firearms, Tobacco)
where prohibited.
example: true
enum:
- true
certify_ip_ownership:
type: boolean
description: Must be `true`. Confirms ownership of any logos/trademarks shown.
example: true
enum:
- true
authorizer_name:
type: string
maxLength: 255
example: Sam Owner
description: Name of the person at your enterprise who is authorizing this DIR registration. Must be a real individual
(used for audit and trademark-claim contests).
authorizer_email:
type: string
format: email
example: sam@acmeplumbing.example.com
description: Contact email of the authorizer. Telnyx may send verification or infringement-notice email here; use
a monitored mailbox.
logo_url:
type: string
format: uri
maxLength: 128
description: Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB).
example: https://acmeplumbing.example.com/logo-256.bmp
call_reasons:
type: array
items:
type: string
maxLength: 64
minItems: 1
maxItems: 10
description: 1–10 reasons your business calls customers. Validate phrasing against `POST /call_reasons/validate`.
example:
- Appointment reminders
- Billing inquiries
documents:
type: array
items:
$ref: '#/components/schemas/Document'
maxItems: 20
description: Supporting documents. Each `document_id` may appear at most once on a DIR.
webhook_url:
type: string
format: uri
nullable: true
maxLength: 2048
description: Optional `https://` URL that receives webhook notifications when this DIR's compliance review completes
(rejection outcomes include structured rejection reasons). Maximum 2048 characters.
example: https://mapleridge.example.com/webhooks/branded-calling
bpo_authorizations:
type: array
items:
$ref: '#/components/schemas/BpoAuthorizationInput'
maxItems: 10
description: Optional. Approved BPO (Business Process Outsourcer) accounts on your organization authorized to place
branded calls for this DIR, each with the signed Letter of Authorization the Brand Owner granted it. Each authorization
starts `pending` and takes effect only after an admin reviews its Letter of Authorization. Omit or send an empty
list to authorize no BPO on this DIR. Maximum 10.
DirDeleteRequestAccepted:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- status
properties:
id:
type: string
format: uuid
description: Id of the DIR whose deletion was requested.
example: 16635d38-75a6-4481-82e8-69af60e05011
status:
type: string
enum:
- delete_requested
description: 'Always `delete_requested`: the DIR has been queued for removal, not yet removed.'
example: delete_requested
DirInfringementUpdateRequest:
type: object
required:
- certify_no_infringement
- certify_brand_is_accurate
- certify_no_shaft_content
- certify_ip_ownership
- infringement_resolution_notes
properties:
certify_no_infringement:
type: boolean
description: Check to certify that the brand no longer infringes anyone else's trademark or intellectual property.
enum:
- true
certify_brand_is_accurate:
type: boolean
description: Must be `true`.
enum:
- true
certify_no_shaft_content:
type: boolean
description: Must be `true`.
enum:
- true
certify_ip_ownership:
type: boolean
description: Must be `true`.
enum:
- true
infringement_resolution_notes:
type: string
minLength: 10
maxLength: 500
description: Explanation of how the infringement concern was addressed.
display_name:
type: string
nullable: true
minLength: 1
maxLength: 35
description: The business name shown to call recipients, 1 to 35 characters, no emoji, not blank.
logo_url:
type: string
nullable: true
maxLength: 128
description: Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB).
call_reasons:
type: array
items:
type: string
nullable: true
minItems: 1
maxItems: 10
documents:
type: array
items:
$ref: '#/components/schemas/Document'
nullable: true
maxItems: 20
description: Append-only supporting documents to attach while resolving the claim (e.g. authorization or licensing
proof).
DirList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/Dir'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
DirPhoneNumber:
type: object
properties:
id:
type: string
format: uuid
example: 1f56eb76-4078-4af7-ad4d-564b027256ee
readOnly: true
dir_id:
type: string
format: uuid
example: 16635d38-75a6-4481-82e8-69af60e05011
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
phone_number:
type: string
description: E.164 with leading `+`.
example: '+19493253498'
batch_id:
type: string
format: uuid
nullable: true
description: Id of the batch this number was vetted as part of.
example: 0a4b1f5e-2f12-4c0c-9a98-9b3a7d8b8e62
loa_document_id:
type: string
format: uuid
nullable: true
description: Id of the Letter of Authorization document attached to this number's batch.
example: null
status:
$ref: '#/components/schemas/PhoneNumberStatus'
rejection_reason:
$ref: '#/components/schemas/RejectionReason'
nullable: true
description: Populated when `status` is `unsuccessful` or `permanently_rejected`.
created_at:
type: string
format: date-time
example: '2026-04-26T18:11:42.850928Z'
readOnly: true
updated_at:
type: string
format: date-time
example: '2026-04-26T18:12:11.123456Z'
readOnly: true
verified_at:
type: string
format: date-time
nullable: true
example: '2026-04-26T18:12:11.123456Z'
readOnly: true
DirStatus:
type: string
enum:
- draft
- submitted
- in_review
- verified
- rejected
- unsuccessful
- suspended
- expired
- infringement_claimed
- permanently_rejected
- delete_requested
description: 'DIR lifecycle status.
- `draft` - newly created; editable; not yet submitted.
- `submitted` / `in_review` - Telnyx is reviewing.
- `verified` - approved; phone numbers may be attached.
- `rejected` - Telnyx rejected this submission; `rejection_reasons` is populated; customer can edit and resubmit.
- `unsuccessful` - system-side error during processing; customer can edit and resubmit.
- `suspended` - temporarily disabled (e.g. by an active infringement claim).
- `expired` - verification expired; customer must resubmit.
- `infringement_claimed` - a trademark/impersonation claim is open against this DIR.
- `permanently_rejected` - terminal; cannot be resubmitted.
- `delete_requested` - you have requested deletion; the DIR still exists and Telnyx is completing the removal (de-registration
and cleanup). A verified DIR keeps serving its branded identity, and keeps billing, until the removal finishes.'
DirUpdateRequest:
type: object
description: All fields are optional; only those supplied are updated. Same per-field rules as `DirCreateRequest`.
properties:
display_name:
type: string
minLength: 1
maxLength: 35
description: Name shown to call recipients. 1–35 characters, no emoji, not whitespace-only.
reselling:
type: boolean
description: Set to true if your organization places calls on behalf of other enterprises (BPO/reseller). Updating
this triggers re-vetting on next submit.
authorizer_name:
type: string
maxLength: 255
description: Name of the person at your enterprise authorizing this DIR. Must be a real individual.
authorizer_email:
type: string
format: email
description: Contact email of the authorizer. Telnyx may send verification or infringement notices here.
logo_url:
type: string
format: uri
maxLength: 128
description: Publicly accessible HTTPS URL (max 128 chars) to a 256x256 BMP logo (max 1 MB).
call_reasons:
type: array
items:
type: string
maxLength: 64
minItems: 1
maxItems: 10
description: 1–10 reasons your business calls customers. Validate phrasing against `POST /call_reasons/validate`.
certify_brand_is_accurate:
type: boolean
description: Certification that the DIR information is accurate. Must be `true` for the DIR to be submitted for
vetting.
example: true
certify_no_shaft_content:
type: boolean
description: Certification that this DIR is not used for SHAFT content (Sex, Hate, Alcohol, Firearms, Tobacco) where
prohibited. Must be `true` for the DIR to be submitted for vetting.
example: true
certify_ip_ownership:
type: boolean
description: Certification of ownership of any logos/trademarks shown. Must be `true` for the DIR to be submitted
for vetting.
example: true
documents:
type: array
items:
$ref: '#/components/schemas/Document'
maxItems: 20
description: 'Additional supporting documents to attach. Append-only: existing documents are never removed or replaced,
and an empty or omitted list is a no-op. Each `document_id` may appear at most once on a DIR.'
webhook_url:
type: string
format: uri
nullable: true
maxLength: 2048
description: Optional `https://` URL that receives webhook notifications when this DIR's compliance review completes.
Send `null` to clear. Changing only this field on a `verified` DIR does not re-vet it. Maximum 2048 characters.
example: https://mapleridge.example.com/webhooks/branded-calling
bpo_authorizations:
type: array
items:
$ref: '#/components/schemas/BpoAuthorizationInput'
maxItems: 10
description: 'Optional. Replace this DIR''s authorized BPO (Business Process Outsourcer) accounts with these, each
with its signed Letter of Authorization. The supplied list replaces the current one: a BPO left out has its authorization
removed, and a new BPO (or a changed Letter of Authorization) is created `pending` admin review. Send an empty
list to clear all authorizations; omit the field to leave them unchanged. Editing this list does not re-vet the
DIR. Maximum 10.'
DirWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Dir'
Direction:
description: The direction of the fax.
type: string
example: outbound
enum:
- inbound
- outbound
DocReqsRequirement:
type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
readOnly: true
example: requirement
country_code:
description: The 2-character (ISO 3166-1 alpha-2) country code where this requirement applies
type: string
readOnly: false
example: FR
locality:
description: The locality where this requirement applies
type: string
readOnly: false
example: Nice
phone_number_type:
description: Indicates the phone_number_type this requirement applies to. Leave blank if this requirement applies
to all number_types.
type: string
enum:
- local
- mobile
- multipurpose
- national
- shared_cost
- toll_free
example: local
readOnly: false
action:
description: Indicates whether this requirement applies to branded_calling, ordering, porting, or both ordering
and porting
type: string
enum:
- both
- branded_calling
- ordering
- porting
example: ordering
readOnly: false
requirement_types:
description: Lists the requirement types necessary to fulfill this requirement
type: array
items:
$ref: '#/components/schemas/DocReqsRequirementType'
readOnly: true
id:
description: Identifies the associated document
type: string
format: uuid
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2021-04-09T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was last updated.
readOnly: true
example: '2021-04-12T20:20:20.020Z'
version:
type: integer
readOnly: true
description: Version number. Increments with each new version. Defaults to 1.
effective_start_at:
type:
- string
- 'null'
format: date-time
readOnly: true
description: When this version became (or will become) active.
effective_end_at:
type:
- string
- 'null'
format: date-time
readOnly: true
description: When this version was superseded. NULL means this is the active or pending version.
DocReqsRequirementList:
type: array
items:
$ref: '#/components/schemas/DocReqsRequirement'
DocReqsRequirementType:
type: object
properties:
acceptance_criteria:
description: Specifies objective criteria for acceptance
type: object
properties:
time_limit:
description: Specifies time-based acceptance criteria
example: Current and not expired
type: string
readOnly: false
locality_limit:
description: Specifies geography-based acceptance criteria
example: Issued by the same country that the phone number belongs to
type: string
readOnly: false
acceptable_values:
description: Specifies the list of strictly possible values for the requirement. Ignored when empty
type: array
items:
type: string
example: US
readOnly: false
max_length:
description: Maximum length allowed for the value
type: integer
example: 20
readOnly: false
min_length:
description: Minimum length allowed for the value
type: integer
example: 16
readOnly: false
acceptable_characters:
description: Specifies the allowed characters as a string
type: string
example: abcdef0123456789
readOnly: false
description:
description: Describes the requirement type
example: Proves the customer has a physical address in the same locality as the phone number
type: string
readOnly: false
example:
description: Provides one or more examples of acceptable documents
example: Utility bill, internet bill, phone bill, or lease
type: string
readOnly: false
type:
description: Defines the type of this requirement type
example: document
type: string
enum:
- document
- address
- textual
readOnly: false
name:
description: A short descriptive name for this requirement_type
example: Proof of Address
type: string
readOnly: true
record_type:
description: Identifies the type of the resource
example: requirement_type
type: string
readOnly: true
id:
description: Identifies the associated document
type: string
format: uuid
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2021-04-09T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was last updated.
readOnly: true
example: '2021-04-12T20:20:20.020Z'
DocReqsRequirementTypeList:
type: array
items:
$ref: '#/components/schemas/DocReqsRequirementType'
DocServiceDocument:
allOf:
- $ref: '#/components/schemas/DocServiceRecord'
- type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
readOnly: true
example: document
content_type:
description: The document's content_type.
type: string
readOnly: true
example: application/pdf
size:
description: Indicates the document's filesize
type: object
readOnly: true
properties:
unit:
description: Identifies the unit
type: string
readOnly: true
example: bytes
amount:
description: The number of bytes
type: integer
readOnly: true
example: 123456
status:
type: string
description: Indicates the current document reviewing status
readOnly: true
enum:
- pending
- verified
- denied
example: pending
sha256:
description: The document's SHA256 hash provided for optional verification purposes.
type: string
readOnly: true
example: 08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c
filename:
description: The filename of the document.
type: string
example: test-document.pdf
customer_reference:
type: string
description: Optional reference string for customer tracking.
example: MY REF 001
av_scan_status:
type: string
description: The antivirus scan status of the document.
readOnly: true
enum:
- scanned
- infected
- pending_scan
- not_scanned
example: scanned
DocServiceDocumentLink:
allOf:
- $ref: '#/components/schemas/DocServiceRecord'
- type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
readOnly: true
example: document_link
document_id:
description: Identifies the associated document.
type: string
format: uuid
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
linked_record_type:
description: The linked resource's record type.
type: string
readOnly: true
example: porting_order
linked_resource_id:
description: Identifies the linked resource.
type: string
readOnly: true
example: 132091b4-442b-4a2a-b87f-61e707e46d54
DocServiceRecord:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: sample_record_type
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
Document:
type: object
required:
- document_id
- document_type
properties:
document_id:
type: string
format: uuid
description: Id returned by the Telnyx Documents API after you upload the file (upload via `POST /v2/documents`;
see https://developers.telnyx.com/api/documents).
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
document_type:
type: string
enum:
- letter_of_authorization
- business_registration
- articles_of_incorporation
- certificate_of_good_standing
- tax_document
- ein_letter
- trademark_registration
- website_ownership
- business_license
- professional_license
- government_id
- utility_bill
- bank_statement
- business_credit_report
- bank_reference_letter
- other
example: business_registration
description: Type of supporting document. Pick the closest match to what the file actually contains; `other` triggers
manual vetting and may slow approval. The matching short_name reference list is at `GET /v2/dir/document_types`.
description:
type: string
maxLength: 255
description: An optional note describing this document, for example what it proves.
example: Certificate of incorporation.
DocumentTypeReference:
type: object
description: Single supported document type.
properties:
short_name:
type: string
description: Stable identifier passed to `Document.document_type`.
example: letter_of_authorization
description:
type: string
example: Signed authorization from the DIR owner permitting Telnyx to register the DIR and its associated numbers
on their behalf
DocumentTypeReferenceList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/DocumentTypeReference'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
DomainGraduationLimitExceededError:
type: object
description: Error envelope returned when a newly sending custom domain on shared egress would exceed its current daily
graduation ceiling. The send is rejected before message creation.
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 1
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- domain_graduation_limit_exceeded
title:
type: string
example: Too Many Requests
detail:
type: string
example: Daily send limit of 250 recipients for this sender domain exceeded. The limit resets at midnight
UTC.
meta:
type: object
description: Bounded retry guidance. Each field is omitted when unknown.
additionalProperties: false
properties:
retry_after_seconds:
type: integer
minimum: 1
description: Seconds until the next UTC-midnight reset.
remaining_today:
type: integer
minimum: 0
description: Recipient headroom remaining for the sender-domain identity before this rejected request.
DomainsErrorResponse:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/email_Error'
DomainsTrackingSettings:
type: object
properties:
open_tracking:
type: boolean
default: false
description: Inject a tracking pixel into HTML messages to record open events.
click_tracking:
type: boolean
default: false
description: Rewrite HTML links through a tracking redirect to record click events.
unsubscribe_tracking:
type: boolean
default: true
description: Add RFC 8058 List-Unsubscribe headers with a signed one-click unsubscribe URL. Enabled by default;
Gmail/Yahoo bulk-sender rules require one-click unsubscribe support.
DownlinkData:
type: object
properties:
amount:
type: number
description: Downlink data
example: 1
unit:
description: Transmission unit
type: string
enum:
- B
- KB
- MB
default: MB
DtmfType:
title: DTMF Type
type: string
description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx
will be accepted in all formats.
enum:
- RFC 2833
- Inband
- SIP INFO
default: RFC 2833
example: Inband
DynamicEmergencyAddress:
type: object
properties:
id:
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f1
readOnly: true
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: dynamic_emergency_address
sip_geolocation_id:
type: string
description: Unique location reference string to be used in SIP INVITE from / p-asserted headers.
example: XYZ123
readOnly: true
status:
type: string
description: Status of dynamic emergency address
readOnly: true
enum:
- pending
- activated
- rejected
example: pending
house_number:
type: string
example: '600'
house_suffix:
type: string
street_pre_directional:
type: string
street_name:
type: string
example: Congress
street_suffix:
type: string
example: St
street_post_directional:
type: string
extended_address:
type: string
locality:
type: string
example: Austin
administrative_area:
type: string
example: TX
postal_code:
type: string
example: '78701'
country_code:
type: string
example: US
enum:
- US
- CA
- PR
created_at:
type: string
description: ISO 8601 formatted date of when the resource was created
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the resource was last updated
readOnly: true
example: '2018-02-02T22:25:27.521Z'
required:
- house_number
- street_name
- locality
- administrative_area
- postal_code
- country_code
DynamicEmergencyEndpoint:
type: object
properties:
id:
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
readOnly: true
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: dynamic_emergency_endpoint
dynamic_emergency_address_id:
type: string
description: An id of a currently active dynamic emergency location.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
status:
type: string
description: Status of dynamic emergency address
readOnly: true
enum:
- pending
- activated
- rejected
example: pending
sip_from_id:
type: string
example: FXDFWEDF
readOnly: true
callback_number:
type: string
example: '+13125550000'
caller_name:
type: string
example: Jane Doe Desk Phone
created_at:
type: string
description: ISO 8601 formatted date of when the resource was created
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the resource was last updated
readOnly: true
example: '2018-02-02T22:25:27.521Z'
required:
- dynamic_emergency_address_id
- callback_number
- caller_name
DynamicVariableExpression:
description: 'Reference a dynamic variable by name.
Resolved at runtime from the assistant''s dynamic-variables context (see
`Assistant.dynamic_variables` and the dynamic-variables webhook).'
example:
name: user_age
type: variable
properties:
name:
description: Variable name to look up in the runtime context.
example: user_age
title: Name
type: string
type:
const: variable
title: Type
type: string
required:
- type
- name
title: DynamicVariableExpression
type: object
ESimPurchase:
title: SIMCardRegistration
type: object
properties:
sim_card_group_id:
type: string
format: uuid
description: The group SIMCardGroup identification. This attribute can be null when it's present in
an associated resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
tags:
type: array
description: Searchable tags associated with the SIM cards
items:
type: string
example:
- personal
- customers
- active-customers
product:
type: string
description: Type of product to be purchased, specify "whitelabel" to use a custom SPN
example: whitelabel
whitelabel_name:
type: string
description: Service Provider Name (SPN) for the Whitelabel eSIM product. It will be displayed as the mobile service
name by operating systems of smartphones. This parameter must only contain letters, numbers and whitespaces.
example: Custom SPN
amount:
type: integer
description: The amount of eSIMs to be purchased.
example: 10
minimum: 1
status:
type: string
description: Status on which the SIM cards will be set after being successfully registered.
enum:
- enabled
- disabled
- standby
example: standby
default: enabled
required:
- amount
EinBrandIdentifier:
type: object
additionalProperties: false
properties:
identifier_type:
const: EIN
value:
type: string
minLength: 1
maxLength: 255
pattern: ^(?:[0-9]{9}|[0-9]{2}-[0-9]{7})$
description: Nine digits, optionally formatted as NN-NNNNNNN.
required:
- identifier_type
- value
ElevenLabsProviderParams:
type: object
description: ElevenLabs provider-specific parameters.
properties:
language_code:
type: string
description: Language code.
api_key:
type: string
description: Custom ElevenLabs API key. If not provided, the default Telnyx key is used.
voice_settings:
type: object
description: ElevenLabs voice settings (stability, similarity_boost, etc.).
additionalProperties: true
ElevenLabsVoiceSettings:
type: object
title: ElevenLabs Voice Settings
properties:
type:
type: string
enum:
- elevenlabs
description: Voice settings provider type
api_key_ref:
description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.'
type: string
example: my_elevenlabs_api_key
required:
- type
EligibilityNumberResponse:
type: object
properties:
detail:
type: string
description: Detailed information about the eligibility status.
phone_number:
type: string
description: The phone number in e164 format.
eligible:
type: boolean
description: Whether the phone number is eligible for hosted messaging.
eligible_status:
type: string
description: The eligibility status of the phone number.
enum:
- NUMBER_CAN_NOT_BE_REPEATED
- NUMBER_CAN_NOT_BE_VALIDATED
- NUMBER_CAN_NOT_BE_WIRELESS
- NUMBER_CAN_NOT_BE_ACTIVE_IN_YOUR_ACCOUNT
- NUMBER_CAN_NOT_HOSTED_WITH_A_TELNYX_SUBSCRIBER
- NUMBER_CAN_NOT_BE_IN_TELNYX
- NUMBER_IS_NOT_A_US_NUMBER
- NUMBER_IS_NOT_A_VALID_ROUTING_NUMBER
- NUMBER_IS_NOT_IN_E164_FORMAT
- BILLING_ACCOUNT_CHECK_FAILED
- BILLING_ACCOUNT_IS_ABOLISHED
- ELIGIBLE
EligibilityNumbersRequest:
type: object
properties:
phone_numbers:
type: array
items:
type: string
x-format: +E.164
description: Phone number to check eligibility
description: List of phone numbers to check eligibility
required:
- phone_numbers
EligibilityNumbersResponse:
type: object
properties:
phone_numbers:
type: array
items:
$ref: '#/components/schemas/EligibilityNumberResponse'
description: List of phone numbers with their eligibility status.
EmailAddress:
type: object
properties:
email:
type: string
name:
type: string
required:
- email
EmailAddressArrayInput:
type: array
minItems: 1
items:
$ref: '#/components/schemas/EmailAddressInput'
EmailAddressInput:
oneOf:
- type: string
- $ref: '#/components/schemas/EmailAddress'
EmailBatchItemError:
type: object
properties:
index:
type: integer
minimum: 0
description: Zero-based index of the failed message in the request array.
code:
type: string
enum:
- bad_request
- not_found
- forbidden
- service_unavailable
- unprocessable_entity
- validation_error
- recipient_suppressed
- reputation_suspended
description: Batch item errors use `message` (not `detail`) for the human-readable text.
message:
type: string
required:
- index
- code
- message
EmailBatchMeta:
type: object
properties:
total:
type: integer
minimum: 0
succeeded:
type: integer
minimum: 0
failed:
type: integer
minimum: 0
required:
- total
- succeeded
- failed
EmailBatchResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailMessage'
errors:
type: array
items:
$ref: '#/components/schemas/EmailBatchItemError'
meta:
$ref: '#/components/schemas/EmailBatchMeta'
required:
- data
- errors
- meta
EmailBlock:
type: object
required:
- id
- record_type
- to
- reason
- source
- scope
- status
- created_at
- updated_at
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_block
description: View-only discriminator.
domain_id:
type: string
format: uuid
nullable: true
description: '`null` ⇒ account scope. Stored on the row; exposed here.'
group_id:
type: string
format: uuid
nullable: true
description: '`null` ⇒ global; set ⇒ group-scoped opt-out.'
from:
type: string
nullable: true
description: '`null` ⇒ not address-scope. (schema: from_address)'
to:
type: string
description: 'Normalized recipient. (schema: to_address)'
reason:
$ref: '#/components/schemas/Reason'
source:
$ref: '#/components/schemas/email_Source'
scope:
$ref: '#/components/schemas/Scope'
status:
$ref: '#/components/schemas/Status'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
expires_at:
type: string
format: date-time
nullable: true
description: 'Optional expiration time. An active row stops matching
send-time suppression checks as soon as `expires_at <= now()`.
A maintenance worker later transitions the row to `status: expired`
and appends an `expired` audit event (normally within 15 minutes).
'
description: 'Suppression record. Schema fields hidden by the view:
`account_id`, `bounce_category`, `dsn_code`, `meta`.
'
EmailBlockEvent:
type: object
required:
- id
- record_type
- event_type
- reason
- source
- actor
- occurred_at
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_block_event
description: View-only.
event_type:
type: string
enum:
- created
- removed
- expired
- override_used
reason:
type: string
description: Free-text snapshot of the block's reason at event time.
source:
type: string
description: Free-text snapshot of the block's source at event time.
actor:
type: string
description: Free-text (`user_id`/`org_id`/`api_key`/`dev_bypass`/`system`/`manual`).
meta:
type: object
nullable: true
additionalProperties: true
description: '`null` when the schema field is nil (the context usually sets it to `{}`).'
occurred_at:
type: string
format: date-time
EmailBlockEventListResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailBlockEvent'
meta:
$ref: '#/components/schemas/OffsetMeta'
EmailBlockImport:
type: object
required:
- id
- record_type
- status
- total
- created_at
- updated_at
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_block_import
description: View-only.
status:
type: string
enum:
- pending
- processing
- completed
- failed
total:
type: integer
description: Data-row count at upload.
provider:
type: string
enum:
- sendgrid
- mailgun
- ses
- generic
description: Omitted when nil.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
description: Omitted until terminal success.
processed_rows:
type: integer
description: Only when `status == completed`.
created_count:
type: integer
description: Only when `status == completed`.
existing_count:
type: integer
description: Only when `status == completed`.
skipped_count:
type: integer
description: Only when `status == completed`.
error_count:
type: integer
description: 'Rows that passed CSV parsing but failed suppression creation.
This is the creation-failure subset of `skipped_count`;
parser-rejected rows equal `skipped_count - error_count`.
Only when `status == completed`.
'
errors:
type: object
additionalProperties:
type: string
description: '`{row_number: reason}`; only rendered when non-empty.'
failure_reason:
type: string
description: Only on terminal failure.
description: 'Import job. Schema fields hidden: `account_id`, `csv_content`,
`block_ttl_days`. Nullable fields use the omit-nullable pattern.
'
EmailBlockImportResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailBlockImport'
EmailBlockListCursorResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailBlock'
meta:
$ref: '#/components/schemas/CursorMeta'
EmailBlockListOffsetResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailBlock'
meta:
$ref: '#/components/schemas/OffsetMeta'
EmailBlockResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailBlock'
EmailDMARCPolicy:
type: object
description: DMARC policy for a sending domain. Drives the recommended _dmarc. TXT record. DMARC is advisory
and never blocks sending. When omitted or null, the domain uses the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).
properties:
p:
type: string
enum:
- none
- quarantine
- reject
default: none
description: Policy applied to messages that fail alignment.
pct:
type: integer
minimum: 0
maximum: 100
default: 100
description: Percentage of messages the policy applies to. Omitted from the record when 100.
rua:
type: string
nullable: true
description: URI for aggregate reports. Defaults to the Telnyx address when absent; null omits it.
sp:
type: string
enum:
- none
- quarantine
- reject
nullable: true
description: Policy for subdomains. Omitted from the record when null.
EmailDomain:
type: object
required:
- id
- record_type
- domain
- type
- status
- usable_for_sending
- usable_for_inbound
- verification
- dns_records
- dkim
- inbound
- dmarc_policy
- tracking
- created_at
- updated_at
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_domain
domain:
type: string
example: example.com
type:
$ref: '#/components/schemas/EmailDomainType'
description: 'Domain type. `custom` domains are account-owned (BYOD). `shared` domains are Telnyx-managed, visible
to and usable by ALL accounts for sending, but read-only: only the owning (system) account may modify, verify,
or delete them; other accounts receive 403 (code 10008).'
status:
$ref: '#/components/schemas/EmailDomainStatus'
usable_for_sending:
type: boolean
usable_for_inbound:
type: boolean
verification:
$ref: '#/components/schemas/EmailDomainVerification'
dns_records:
type: array
items:
$ref: '#/components/schemas/DNSRecord'
dkim:
$ref: '#/components/schemas/DKIMStatus'
inbound:
$ref: '#/components/schemas/InboundConfig'
dmarc_policy:
type: object
allOf:
- $ref: '#/components/schemas/EmailDMARCPolicy'
nullable: true
description: 'Customer DMARC policy. null means use the advisory default (v=DMARC1; p=none; rua=mailto:dmarc@telnyx.com).
'
tracking:
$ref: '#/components/schemas/DomainsTrackingSettings'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
verified_at:
type: string
format: date-time
nullable: true
reputation:
type: object
description: Sender reputation for this domain (present on all domain responses).
properties:
band:
type: string
description: Reputation band, e.g. good/warn/poor.
breakdown:
type: object
additionalProperties: true
computed_at:
type: string
format: date-time
nullable: true
example:
id: 123e4567-e89b-12d3-a456-426614174000
record_type: email_domain
domain: example.com
type: custom
status: pending
usable_for_sending: false
usable_for_inbound: false
verification:
ownership: pending
spf: missing_optional
dkim: pending
dmarc: missing_optional
mx: not_required
dns_records: []
dkim:
selector: null
algorithm: null
key_length: null
active: false
rotated_at: null
inbound:
enabled: false
catch_all: false
mx_required: false
dmarc_policy:
p: none
pct: 100
rua: mailto:dmarc@telnyx.com
tracking:
open_tracking: false
click_tracking: false
unsubscribe_tracking: false
created_at: '2026-01-01T00:00:00Z'
updated_at: '2026-01-01T00:00:00Z'
verified_at: null
EmailDomainDKIMRotation:
type: object
description: 'Result of rotating a domain''s DKIM key. The new key is active and signing switches to it immediately;
the previous key is retired to a `retiring` state (retained, not revoked) so it can be revoked after the DNS propagation
grace period. Selectors are fixed, so the DKIM DNS record''s TXT value is replaced in place at the shared `._domainkey.`
host — `old_selector_retained` is false and the returned dns_records carry the new value the customer must publish
promptly.
'
required:
- record_type
- domain_id
- domain
- dkim
- previous_dkim_key
- old_selector_retained
- dns_records
properties:
record_type:
type: string
enum:
- email_domain_dkim_rotation
domain_id:
type: string
format: uuid
domain:
type: string
dkim:
type: object
description: The new active DKIM key.
required:
- id
- selector
- algorithm
- key_length
- version
- status
properties:
id:
type: string
format: uuid
selector:
type: string
algorithm:
type: string
enum:
- rsa-sha256
key_length:
type: integer
enum:
- 2048
version:
type: integer
description: Monotonically increasing per-domain key version.
minimum: 1
status:
type: string
enum:
- active
activated_at:
type: string
format: date-time
nullable: true
previous_dkim_key:
type: object
nullable: true
description: 'The retired previous key, or null when the domain had no active key before rotation. Retained in a
`retiring` state so it can be revoked after the DNS propagation grace period.
'
required:
- id
- selector
- version
- status
properties:
id:
type: string
format: uuid
selector:
type: string
version:
type: integer
status:
type: string
enum:
- retiring
- revoked
old_selector_retained:
type: boolean
description: 'False for this service: one selector is fixed per domain, so rotation replaces the TXT value at the
existing _domainkey host. There is no dual-selector overlap; publish the replacement TXT promptly because signing
switches immediately.'
dns_records:
type: array
description: 'The DKIM DNS records the customer must publish, carrying the new key''s TXT value with verification
reset to pending.
'
items:
$ref: '#/components/schemas/DNSRecord'
example:
record_type: email_domain_dkim_rotation
domain_id: 123e4567-e89b-12d3-a456-426614174002
domain: example.com
dkim:
id: 123e4567-e89b-12d3-a456-42661417400a
selector: telnyx1
algorithm: rsa-sha256
key_length: 2048
version: 2
status: active
activated_at: '2026-09-11T12:00:00Z'
previous_dkim_key:
id: 123e4567-e89b-12d3-a456-426614174009
selector: telnyx1
version: 1
status: retiring
old_selector_retained: false
dns_records:
- id: 123e4567-e89b-12d3-a456-42661417400b
purpose: dkim
record_type: TXT
host: telnyx1._domainkey.example.com
value: v=DKIM1; k=rsa; p=MIIBIjANBgkqh...
actual_value: null
priority: null
required: true
status: pending
EmailDomainDKIMRotationResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailDomainDKIMRotation'
EmailDomainHealth:
type: object
required:
- id
- record_type
- status
- usable_for_sending
- usable_for_inbound
- verification
- checked_at
properties:
id:
type: string
format: uuid
description: Unique identifier for the email domain
record_type:
type: string
enum:
- email_domain_health
description: Record type discriminator
status:
type: string
enum:
- pending
- verifying
- verified
- failed
- degraded
- suspended
description: Current domain status
usable_for_sending:
type: boolean
description: Whether the domain is usable for sending email
usable_for_inbound:
type: boolean
description: Whether the domain is usable for receiving inbound email
verification:
$ref: '#/components/schemas/EmailDomainVerification'
checked_at:
type: string
format: date-time
description: Timestamp of the last health check
EmailDomainHealthResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailDomainHealth'
EmailDomainListResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailDomain'
meta:
oneOf:
- $ref: '#/components/schemas/OffsetPaginationMeta'
- $ref: '#/components/schemas/email_CursorPaginationMeta'
EmailDomainResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailDomain'
EmailDomainStatus:
type: string
enum:
- pending
- verifying
- verified
- failed
- degraded
- suspended
EmailDomainType:
type: string
enum:
- custom
- shared
- shared_inbound
EmailDomainVerification:
type: object
required:
- ownership
- spf
- dkim
- dmarc
- mx
properties:
ownership:
type: string
enum:
- pending
- verified
- not_required
spf:
type: string
enum:
- missing_optional
- verified
- failed
- not_required
dkim:
type: string
enum:
- pending
- verified
- failed
dmarc:
type: string
enum:
- missing_optional
- verified
- failed
mx:
type: string
enum:
- not_required
- pending
- verified
- failed
EmailDraft:
type: object
description: An unsent, mutable draft message belonging to an inbox.
properties:
record_type:
type: string
enum:
- email_draft
id:
type: string
format: uuid
inbox_id:
type: string
format: uuid
status:
type: string
enum:
- draft
- sending
- sent
description: '`draft` until the draft is sent. A sent draft is retained for audit and
becomes immutable.
'
from:
type: string
nullable: true
description: Sender address. Defaults to the inbox address at send time when null.
from_name:
type: string
nullable: true
to:
type: array
items:
$ref: '#/components/schemas/EmailAddress'
cc:
type: array
items:
$ref: '#/components/schemas/EmailAddress'
bcc:
type: array
items:
$ref: '#/components/schemas/EmailAddress'
reply_to:
type: string
nullable: true
subject:
type: string
nullable: true
text_body:
type: string
nullable: true
html_body:
type: string
nullable: true
headers:
type: object
additionalProperties:
type: string
description: Custom headers. Reply drafts carry `In-Reply-To` and `References`.
attachments:
type: array
items:
type: object
labels:
type: array
items:
type: string
description: Mutable mailbox-state labels. Not propagated to Email Detail Records.
tags:
type: array
items:
type: string
description: Transport/reporting attribution tags, propagated to Email Detail Records at send time.
metadata:
type: object
description: Arbitrary customer-defined metadata.
reply_to_message_id:
type: string
format: uuid
nullable: true
description: Inbound message this draft replies to. Server-owned; set only on reply drafts.
thread_id:
type: string
format: uuid
nullable: true
description: Conversation thread inherited from the parent message.
sent_message_id:
type: string
format: uuid
nullable: true
description: The email message created when this draft was sent.
sent_at:
type: string
format: date-time
nullable: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- record_type
- id
- inbox_id
- status
EmailDraftListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailDraft'
meta:
$ref: '#/components/schemas/email_PaginationMeta'
required:
- data
- meta
EmailDraftRequest:
type: object
description: 'All fields are optional — a draft may be saved incomplete. `account_id`,
`inbox_id`, `status`, `sent_at`, `sent_message_id`, `reply_to_message_id` and
`thread_id` are server-owned and ignored if supplied.
'
properties:
from_email:
type: string
from_name:
type: string
to:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
cc:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
bcc:
type: array
items:
$ref: '#/components/schemas/EmailAddressInput'
reply_to:
type: string
subject:
type: string
maxLength: 255
text_body:
type: string
html_body:
type: string
text:
type: string
description: Alias for `text_body`, matching the send endpoint.
html:
type: string
description: Alias for `html_body`, matching the send endpoint.
headers:
type: object
additionalProperties:
type: string
attachments:
type: array
items:
type: object
labels:
type: array
items:
type: string
tags:
type: array
items:
type: string
metadata:
type: object
EmailDraftResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailDraft'
required:
- data
EmailEventCounts:
type: object
description: Recipient-level outcome counts for the queried time range. Each to, cc, and bcc recipient counts separately;
repeated events of the same type for the same message and recipient count once. Partial MTA injection results count
successful recipients as sent and unsuccessful recipients as failed. Only the ten listed event types are counted;
other valid event types (scheduled, cancelled, sandbox, sending, rejected) are not included in stats.
properties:
queued:
type: integer
minimum: 0
sent:
type: integer
minimum: 0
delivered:
type: integer
minimum: 0
deferred:
type: integer
minimum: 0
bounced:
type: integer
minimum: 0
opened:
type: integer
minimum: 0
clicked:
type: integer
minimum: 0
complained:
type: integer
minimum: 0
unsubscribed:
type: integer
minimum: 0
failed:
type: integer
minimum: 0
required:
- queued
- sent
- delivered
- deferred
- bounced
- opened
- clicked
- complained
- unsubscribed
- failed
EmailEventRates:
type: object
description: Recipient-level event rates as percentages, rounded to 2 decimal places.
properties:
delivery_rate:
type: number
format: float
minimum: 0
description: Delivered recipients / queued recipients as a percentage.
bounce_rate:
type: number
format: float
minimum: 0
description: Bounced recipients / queued recipients as a percentage.
deferred_rate:
type: number
format: float
minimum: 0
description: Deferred recipients / queued recipients as a percentage.
open_rate:
type: number
format: float
minimum: 0
description: Recipients opened / recipients delivered as a percentage.
click_rate:
type: number
format: float
minimum: 0
description: Recipients clicked / recipients opened as a percentage.
complaint_rate:
type: number
format: float
minimum: 0
description: Recipients with a complaint feedback report / delivered recipients as a percentage.
required:
- delivery_rate
- bounce_rate
- deferred_rate
- open_rate
- click_rate
- complaint_rate
EmailEventStats:
type: object
properties:
record_type:
type: string
enum:
- email_event_stats
counts:
$ref: '#/components/schemas/EmailEventCounts'
rates:
$ref: '#/components/schemas/EmailEventRates'
time_range:
$ref: '#/components/schemas/TimeRange'
required:
- record_type
- counts
- rates
- time_range
EmailEventStatsResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailEventStats'
required:
- data
EmailEventType:
type: string
description: Bare stored event names returned by message history. In addition to the normal send and delivery lifecycle,
polling can expose suppression, scan, and quarantine lifecycle rows. Sharp canonical names gw_reject, injection_timeout,
and expired distinguish gateway rejection, ambiguous injection timeout, and MTA expiration. The failed and bounced
names remain valid for system/admin failures and hard bounces respectively. Existing stored rows retain their original
names.
enum:
- queued
- deferred
- scheduled
- cancelled
- sandbox
- sending
- sent
- failed
- delivered
- bounced
- complained
- suppressed
- rejected
- opened
- clicked
- unsubscribed
- daily_limit_exceeded
- scan_deferred
- quarantined
- quarantine_released
- quarantine_release_dispatched
- quarantine_rejected
- quarantine_expired
- gw_reject
- injection_timeout
- expired
EmailInbox:
type: object
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_inbox
address:
type: string
format: email
status:
type: string
enum:
- active
- paused
domain_id:
type: string
format: uuid
domain:
type: string
description: Domain name used by the inbox address.
settings:
type: object
additionalProperties: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- id
- record_type
- address
- status
- domain_id
- domain
- settings
- created_at
- updated_at
EmailInboxListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailInbox'
meta:
$ref: '#/components/schemas/EmailInboxPaginationMeta'
required:
- data
- meta
EmailInboxPaginationMeta:
type: object
properties:
page_size:
type: integer
minimum: 1
maximum: 250
page_cursor:
type: string
description: Cursor for the next inbox page, when more results are available.
required:
- page_size
EmailInboxResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailInbox'
required:
- data
EmailMessage:
type: object
properties:
record_type:
type: string
enum:
- email_message
id:
type: string
format: uuid
status:
$ref: '#/components/schemas/EmailMessageStatus'
from:
$ref: '#/components/schemas/EmailAddress'
to:
type: array
items:
$ref: '#/components/schemas/EmailAddress'
cc:
type: array
items:
$ref: '#/components/schemas/EmailAddress'
bcc:
type: array
items:
$ref: '#/components/schemas/EmailAddress'
reply_to:
type: string
nullable: true
subject:
type: string
template_id:
type: string
format: uuid
nullable: true
template_variables:
type: object
additionalProperties: true
default: {}
tags:
type: array
default: []
items:
type: string
description: Customer-supplied tags stored with the message.
metadata:
type: object
additionalProperties: true
default: {}
description: Customer-supplied metadata stored with the message.
attachments:
type: array
items:
$ref: '#/components/schemas/AttachmentResponse'
events:
type: array
items:
$ref: '#/components/schemas/EmbeddedMessageEvent'
created_at:
type: string
format: date-time
scheduled_at:
type: string
format: date-time
description: Present when a scheduled_at value was stored. Persists even after the scheduled send has been processed
or cancelled.
inline_css:
type: boolean
description: Present when true in the immediate create response. Not persisted; absent on subsequent GET requests.
sandbox:
type: boolean
description: Present when sandbox mode was used.
recipient_statuses:
type: object
description: 'Per-status recipient counts for the message. Present only for outbound messages
with recipient rows. Keys are recipient statuses, values are counts.
Example: `{"delivered": 998, "bounced": 2}`.
'
additionalProperties:
type: integer
example:
delivered: 998
bounced: 2
suppressed:
type: array
description: Recipients excluded from delivery by suppression checks, with reasons. On batch items, present when
that item had suppressed recipients; all other recipients of the item still receive the message. For single sends
this information appears at the top level of the response instead (see EmailMessageResponse.suppressed).
items:
$ref: '#/components/schemas/SuppressedRecipient'
required:
- record_type
- id
- status
- from
- to
- cc
- bcc
- subject
- reply_to
- template_id
- template_variables
- tags
- metadata
- attachments
- events
- created_at
EmailMessageDetail:
allOf:
- $ref: '#/components/schemas/EmailMessage'
- type: object
properties:
text_body:
type: string
nullable: true
description: Plain-text body submitted for the message.
html_body:
type: string
nullable: true
description: HTML body submitted for the message.
required:
- text_body
- html_body
EmailMessageDetailResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailMessageDetail'
required:
- data
EmailMessageListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailMessage'
meta:
$ref: '#/components/schemas/email_PaginationMeta'
required:
- data
- meta
EmailMessageResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailMessage'
suppressed:
type: array
description: Recipients removed by suppression checks when at least one recipient remains and the message is accepted.
items:
$ref: '#/components/schemas/SuppressedRecipient'
required:
- data
EmailMessageStatus:
type: string
description: Current status of an email message. Lifecycle statuses (queued, scheduled, etc.) are set on creation. Delivery
statuses (delivered, bounced, etc.) are updated by delivery event consumers.
enum:
- queued
- scheduled
- cancelled
- sandbox
- sending
- sent
- failed
- deferred
- delivered
- bounced
- complained
- rejected
- opened
- clicked
- unsubscribed
EmailRecipient:
type: object
properties:
record_type:
type: string
enum:
- email_recipient
id:
type: string
format: uuid
description: Recipient UUID.
message_id:
type: string
format: uuid
description: Parent email message UUID.
address:
type: string
format: email
nullable: true
description: Recipient email address. Null for BCC recipients (redacted for privacy).
kind:
type: string
enum:
- to
- cc
- bcc
status:
type: string
enum:
- queued
- sending
- sent
- deferred
- delivered
- bounced
- failed
- gw_reject
- cancelled
- injection_timeout
- expired
description: Current per-recipient delivery status.
billable:
type: boolean
description: Whether this recipient's delivery is billable (set on queue acceptance).
sent_at:
type: string
format: date-time
nullable: true
delivered_at:
type: string
format: date-time
nullable: true
failed_at:
type: string
format: date-time
nullable: true
smtp_code:
type: integer
nullable: true
description: SMTP response code when available (e.g. 550 for bounces).
smtp_response:
type: string
nullable: true
description: SMTP response message when available.
required:
- record_type
- id
- message_id
- address
- kind
- status
- billable
EmailRecipientListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailRecipient'
meta:
type: object
properties:
page_size:
type: integer
minimum: 1
maximum: 100
page_cursor:
type: string
nullable: true
description: Cursor for the next page. Absent when there are no more results.
required:
- page_size
required:
- data
- meta
EmailRecipientResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailRecipient'
required:
- data
EmailTemplate:
allOf:
- $ref: '#/components/schemas/EmailTemplateCommon'
- type: object
properties:
subject:
type: string
maxLength: 255
nullable: true
required:
- subject
EmailTemplateCommon:
type: object
properties:
record_type:
type: string
enum:
- email_template
id:
type: string
format: uuid
name:
type: string
maxLength: 255
html_body:
type: string
nullable: true
text_body:
type: string
nullable: true
variables:
type: array
description: Persisted variable names. In `explicit` mode this array preserves the exact provided order, duplicates,
and string contents; in `automatic` mode it is derived from the stored subject and bodies.
items:
type: string
maxLength: 255
variables_mode:
type: string
enum:
- automatic
- explicit
description: '`automatic` when variable names are derived from template content; `explicit` when `variables` is
the exact manually managed array.'
strict_variables:
type: boolean
description: 'Whether strict variable validation is enabled for this template. When `true`, sends and renders that
are missing a variable marked `required: true` in `variable_schema` fail with 422 naming the variable.'
autoescape:
type: boolean
description: Whether HTML autoescaping is enabled for this template. When `true`, only rendered `html_body` expression
output is HTML-escaped at the output boundary; `subject` and `text_body` are never autoescaped.
variable_schema:
type: object
nullable: true
description: Structured variable requirements, or `null` when the template uses only the legacy `variables` array.
additionalProperties:
$ref: '#/components/schemas/VariableSchemaEntry'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- record_type
- id
- name
- html_body
- text_body
- variables
- variables_mode
- strict_variables
- autoescape
- variable_schema
- created_at
- updated_at
EmailTemplateListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailTemplate'
meta:
$ref: '#/components/schemas/email_PaginationMeta'
required:
- data
- meta
EmailTemplateResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailTemplate'
required:
- data
EmailValidation:
type: object
properties:
record_type:
type: string
enum:
- email_validation
email:
type: string
valid:
type: boolean
risk_score:
type: number
format: float
minimum: 0
did_you_mean:
type: string
description: Suggested correction for typo. Omitted when nil.
checks:
$ref: '#/components/schemas/EmailValidationChecks'
required:
- record_type
- email
- valid
- risk_score
- checks
EmailValidationBatch:
type: object
description: Shape returned by the create endpoint. Includes duplicates_removed.
properties:
record_type:
type: string
enum:
- email_validation_batch
id:
type: string
format: uuid
status:
$ref: '#/components/schemas/EmailValidationBatchStatus'
total:
type: integer
minimum: 0
duplicates_removed:
type: integer
minimum: 0
webhook_url:
type: string
format: uri
required:
- record_type
- id
- status
- total
- duplicates_removed
EmailValidationBatchDetail:
description: Shape returned by the GET endpoint. Does not include duplicates_removed.
allOf:
- type: object
properties:
record_type:
type: string
enum:
- email_validation_batch
id:
type: string
format: uuid
status:
$ref: '#/components/schemas/EmailValidationBatchStatus'
total:
type: integer
minimum: 0
webhook_url:
type: string
format: uri
completed_at:
type: string
format: date-time
results:
type: object
description: Map keyed by original email address. Present only when the batch is completed.
additionalProperties:
$ref: '#/components/schemas/EmailValidationResult'
required:
- record_type
- id
- status
- total
EmailValidationBatchDetailResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailValidationBatchDetail'
required:
- data
EmailValidationBatchResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailValidationBatch'
required:
- data
EmailValidationBatchStatus:
type: string
enum:
- pending
- processing
- completed
- failed
EmailValidationCheck:
type: object
properties:
pass:
type: boolean
details:
type: string
description: Human-readable check detail. Omitted when nil.
required:
- pass
EmailValidationChecks:
type: object
properties:
syntax:
$ref: '#/components/schemas/EmailValidationCheck'
mx:
$ref: '#/components/schemas/EmailValidationCheck'
disposable:
$ref: '#/components/schemas/EmailValidationCheck'
role_based:
$ref: '#/components/schemas/EmailValidationCheck'
typo:
$ref: '#/components/schemas/EmailValidationTypoCheck'
required:
- syntax
- mx
- disposable
- role_based
- typo
EmailValidationResponse:
type: object
properties:
data:
$ref: '#/components/schemas/EmailValidation'
required:
- data
EmailValidationResult:
type: object
properties:
email:
type: string
valid:
type: boolean
risk_score:
type: number
format: float
minimum: 0
did_you_mean:
type: string
description: Suggested correction for typo. Omitted when nil.
checks:
$ref: '#/components/schemas/EmailValidationChecks'
required:
- email
- valid
- risk_score
- checks
EmailValidationTypoCheck:
allOf:
- $ref: '#/components/schemas/EmailValidationCheck'
- type: object
properties:
suggestion:
type: string
description: Suggested correction for common typos. Omitted when nil.
EmailVerificationConfirmRequest:
type: object
required:
- code
properties:
code:
type: string
minLength: 6
maxLength: 6
pattern: ^\d{6}$
description: The 6-digit code sent to the authorizer email.
example: '482915'
EmailVerificationStatus:
type: object
description: Verification state for a DIR's authorizer email.
required:
- record_type
- email_verified
- status
properties:
record_type:
type: string
enum:
- email_verification
description: Always `email_verification`.
example: email_verification
readOnly: true
email_verified:
type: boolean
description: Whether the DIR's authorizer email has been confirmed.
example: false
status:
type: string
enum:
- sent
- verified
- unverified
description: '`sent` after a code is emailed; `verified` after a successful confirm; `unverified` when no verification
is in progress.'
example: sent
expires_at:
type: string
format: date-time
nullable: true
description: When the outstanding code stops being accepted. Null when no verification is in progress.
example: '2026-07-30T17:15:00Z'
readOnly: true
sends_remaining_today:
type: integer
nullable: true
description: How many more codes may be requested for this DIR today. Null when the daily cap does not apply.
example: 9
readOnly: true
EmailVerificationStatusWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailVerificationStatus'
EmailWebhook:
type: object
required:
- id
- record_type
- url
- events
- domain_id
- created_at
- updated_at
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_webhook
url:
type: string
format: uri
description: HTTPS endpoint to deliver subscribed events to.
events:
type: array
minItems: 1
items:
$ref: '#/components/schemas/EmailWebhookEvent'
description: 'Allowlist of event types delivered to this webhook. At least one event is required — there is no default-to-all.
'
domain_id:
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
example:
id: 123e4567-e89b-12d3-a456-426614174003
record_type: email_webhook
url: https://example.com/webhooks/email
events:
- email.sent
- email.delivered
- email.bounced
domain_id: 123e4567-e89b-12d3-a456-426614174000
created_at: '2026-06-18T12:00:00Z'
updated_at: '2026-06-18T12:00:00Z'
EmailWebhookEvent:
type: string
description: Event types accepted by domain webhook subscriptions. Allowlists match the legacy event_type, not canonical_event_type.
Of the 22 accepted types, email.sending is stored but intentionally not published. Cancellation, daily-limit failures,
and system failures publish after commit when a matching domain webhook is configured.
enum:
- email.scheduled
- email.sandbox
- email.queued
- email.sending
- email.sent
- email.delivered
- email.deferred
- email.bounced
- email.failed
- email.complained
- email.opened
- email.clicked
- email.unsubscribed
- email.received
- email.cancelled
- email.daily_limit_exceeded
- email_domain.created
- email_domain.verified
- email_domain.degraded
- email_domain.suspended
- email_domain.deleted
- email_domain.dkim_rotated
EmailWebhookListResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailWebhook'
meta:
$ref: '#/components/schemas/OffsetPaginationMeta'
EmailWebhookRecipient:
type: object
properties:
email:
type: string
format: email
name:
type: string
nullable: true
kind:
type: string
enum:
- to
- cc
- bcc
required:
- email
EmailWebhookResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EmailWebhook'
EmbeddedMessageEvent:
type: object
properties:
type:
$ref: '#/components/schemas/EmailEventType'
occurred_at:
type: string
format: date-time
payload:
type: object
additionalProperties: true
required:
- type
- occurred_at
description: An event embedded in a message response. The dedicated per-message events endpoint additionally returns
event_type and canonical_event_type.
EmbeddingBucketRequest:
properties:
bucket_name:
type: string
title: Bucket Name
document_chunk_size:
type: integer
title: Document Chunk Size
default: 1024
document_chunk_overlap_size:
type: integer
title: Document Chunk Overlap Size
default: 512
embedding_model:
allOf:
- $ref: '#/components/schemas/SupportedEmbeddingModels'
default: intfloat/multilingual-e5-large
loader:
allOf:
- $ref: '#/components/schemas/SupportedEmbeddingLoaders'
default: default
type: object
required:
- bucket_name
title: EmbeddingBucketRequest
EmbeddingMetadata:
properties:
source:
type: string
title: Source
checksum:
type: string
title: Checksum
embedding:
type: string
title: Embedding
filename:
type: string
title: Filename
certainty:
type: number
title: Certainty
loader_metadata:
type: object
title: Loader Metadata
additionalProperties: true
type: object
required:
- source
- checksum
- embedding
- filename
title: EmbeddingMetadata
EmbeddingResponse:
properties:
data:
type: object
properties:
task_id:
type: string
format: uuid
title: Task ID
task_name:
type: string
title: Task Name
status:
type: string
title: Status
created_at:
type: string
title: Created At
finished_at:
type:
- string
- 'null'
title: Finished At
user_id:
type: string
format: uuid
title: User ID
type: object
required:
- data
title: EmbeddingResponse
EmbeddingSimilaritySearchDocument:
properties:
document_chunk:
type: string
title: Document Chunk
distance:
type: number
title: Distance
metadata:
$ref: '#/components/schemas/EmbeddingMetadata'
type: object
required:
- document_chunk
- distance
- metadata
title: EmbeddingSimilaritySearchDocument
description: "Example document response from embedding service\n{\n \"document_chunk\": \"your status? This is Vanessa\
\ Bloome...\",\n \"distance\": 0.18607724,\n \"metadata\": {\n \"source\": \"https://us-central-1.telnyxstorage.com/scripts/bee_movie_script.txt\"\
,\n \"checksum\": \"343054dd19bab39bbf6761a3d20f1daa\",\n \"embedding\": \"openai/text-embedding-ada-002\",\n\
\ \"filename\": \"bee_movie_script.txt\",\n \"certainty\": 0.9069613814353943,\n \"loader_metadata\": {}\n\
\ }\n}"
EmbeddingSimilaritySearchRequest:
properties:
bucket_name:
type: string
title: Bucket Name
query:
type: string
title: Query
num_of_docs:
type: integer
title: Num Of Docs
default: 3
type: object
required:
- bucket_name
- query
title: EmbeddingSimilaritySearchRequest
EmbeddingSimilaritySearchResponse:
properties:
data:
items:
$ref: '#/components/schemas/EmbeddingSimilaritySearchDocument'
type: array
title: Data
type: object
required:
- data
title: EmbeddingSimilaritySearchResponse
EmbeddingUrlRequest:
properties:
url:
type: string
title: URL
description: The URL of the webpage to embed
bucket_name:
type: string
title: Bucket Name
description: Name of the bucket to store the embeddings. This bucket must already exist.
type: object
required:
- url
- bucket_name
title: EmbeddingUrlRequest
EmbeddingsBucketFiles:
properties:
filename:
type: string
title: Filename
status:
type: string
title: Status
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
last_embedded_at:
type: string
format: date-time
title: Last Embedded At
error_reason:
type: string
title: Error Reason
type: object
required:
- filename
- status
- created_at
title: EmbeddingsBucketFiles
EmbeddingsBucketFilesData:
properties:
data:
items:
$ref: '#/components/schemas/EmbeddingsBucketFiles'
type: array
title: Data
type: object
required:
- data
title: EmbeddingsBucketFilesData
EmergencySettings:
description: The emergency services settings for a phone number.
type: object
properties:
emergency_enabled:
type: boolean
default: false
description: Allows you to enable or disable emergency services on the phone number. In order to enable emergency
services, you must also set an emergency_address_id.
emergency_address_id:
type: string
description: Identifies the address to be used with emergency services.
emergency_status:
type: string
description: Represents the state of the number regarding emergency activation.
default: disabled
enum:
- disabled
- active
- provisioning
- deprovisioning
- provisioning-failed
example:
emergency_enabled: true
emergency_address_id: '1315261609962112019'
emergency_status: active
EnabledFeatures:
type: string
enum:
- telephony
- messaging
description: If `telephony` is enabled, the assistant will be able to make and receive calls. If `messaging` is enabled,
the assistant will be able to send and receive messages.
EncryptedMedia:
type:
- string
- 'null'
enum:
- SRTP
- null
example: SRTP
description: Enable use of SRTP for encryption. Can only be set when the SIP signaling transport protocol is TLS.
EndConferenceRequest:
type: object
title: End Conference Request
properties:
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same conference.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example: {}
Endpoint:
description: URL of an S3-compatible storage endpoint, used to direct uploads and presigned download URLs to a non-AWS
store (for example MinIO, Cloudflare R2, Wasabi, Backblaze B2, or Supabase). A bare host (https://s3.example.com)
or a path-prefixed URL (https://xyz.supabase.co/storage/v1/s3) is accepted, and must use the http or https scheme.
type: string
format: uri
pattern: ^https?://
example: https://s3.example.com
EnhanceInstructionsRequest:
properties:
enhancement_prompt:
anyOf:
- type: string
- type: 'null'
title: Enhancement Prompt
description: Optional guidance describing how the instructions should be enhanced. When provided, the LLM applies
these requested changes in addition to fixing any identified issues.
instructions:
anyOf:
- type: string
- type: 'null'
title: Instructions
description: The instructions to enhance. When omitted, the assistant's existing instructions are used.
type: object
title: EnhanceInstructionsRequest
EnhancedCallerName:
type: object
description: Enhanced caller name for the phone number's owner. Populated when `type=enhanced-caller-name` is requested.
properties:
caller_name:
type:
- string
- 'null'
description: The name associated with the phone number.
example: Jane Doe
error_code:
type:
- string
- 'null'
description: A lookup-specific error code if the enhanced caller name could not be resolved; otherwise null.
example: null
EnqueueRequest:
type: object
title: Enqueue Request
required:
- queue_name
properties:
queue_name:
description: The name of the queue the call should be put in. If a queue with a given name doesn't exist yet it
will be created.
type: string
example: tier_1_support
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
max_wait_time_secs:
description: The number of seconds after which the call will be removed from the queue.
type: integer
example: 600
max_size:
description: The maximum number of calls allowed in the queue at a given time. Can't be modified for an existing
queue.
type: integer
default: 100
example: 200
keep_after_hangup:
type: boolean
description: If set to true, the call will remain in the queue after hangup. In this case bridging to such call
will fail with necessary information needed to re-establish the call.
default: false
example: true
example:
queue_name: support
max_wait_time_secs: 600
max_size: 20
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
EnterpriseCreate:
type: object
required:
- legal_name
- organization_type
- country_code
- website
- fein
- industry
- number_of_employees
- organization_legal_type
- doing_business_as
- jurisdiction_of_incorporation
- organization_contact
- billing_contact
- organization_physical_address
- billing_address
properties:
legal_name:
type: string
example: Acme Plumbing LLC
description: Your business's full registered legal name, exactly as it appears on your incorporation or tax documents,
3 to 64 characters.
minLength: 3
maxLength: 64
organization_type:
type: string
enum:
- commercial
- government
- non_profit
example: commercial
description: 'Organization category for vetting purposes:
- `commercial` - for-profit business entities (LLC, corp, partnership, sole proprietorship). Most callers fall
here.
- `government` - federal/state/local government bodies.
- `non_profit` - registered 501(c)(3)/equivalent (incl. educational institutions, charities, religious organisations).'
country_code:
type: string
description: ISO 3166-1 alpha-2 country code. Currently `US` and `CA` are supported.
example: US
role_type:
type: string
enum:
- enterprise
- bpo
description: '`enterprise` for an organization registering its own DIRs (the default, and the right choice when
the calls display your own brand). `bpo` for a Business Process Outsourcer: a call center that places calls on
behalf of other enterprises and displays their brand. A `bpo` enterprise describes the call center itself and
cannot own a DIR. Each client the call center calls for gets its own `enterprise` in the same account, with the
client''s DIR under it; that DIR is then linked to the `bpo` enterprise through `bpo_authorizations`. Fixed at
creation.'
example: enterprise
default: enterprise
website:
type: string
format: uri
maxLength: 255
example: https://acmeplumbing.example.com
description: Your business's public website address, including https://. Leave blank if your business has no website.
fein:
type: string
description: US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent.
example: 12-3456789
industry:
type: string
description: The industry your business operates in. Choose the closest match from the list; if your value is not
accepted, pick the nearest category.
example: technology
enum:
- accounting
- finance
- billing
- collections
- business
- charity
- nonprofit
- communications
- telecom
- customer service
- support
- delivery
- shipping
- logistics
- education
- financial
- banking
- government
- public
- healthcare
- health
- pharmacy
- medical
- insurance
- legal
- law
- notifications
- scheduling
- real estate
- property
- retail
- ecommerce
- sales
- marketing
- software
- technology
- tech
- media
- surveys
- market research
- travel
- hospitality
- hotel
number_of_employees:
type: string
enum:
- 1-10
- 11-50
- 51-200
- 201-500
- 501-2000
- 2001-10000
- 10001+
example: 51-200
description: Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current
employee count.
organization_legal_type:
type: string
enum:
- corporation
- llc
- partnership
- nonprofit
- other
example: llc
description: 'Legal-entity form. Pick the form that matches your incorporation documents:
- `corporation` - C-corp or S-corp.
- `llc` - limited liability company.
- `partnership` - general/limited partnership.
- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.
- `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional
documents during vetting.'
doing_business_as:
type: string
maxLength: 255
example: Acme Plumbing
description: The trade name your business operates under if it is different from your legal name, also called a
Doing Business As (DBA) name. Leave blank if you only use your legal name.
jurisdiction_of_incorporation:
type: string
maxLength: 255
example: Delaware
description: The state, province, or country where your business was legally incorporated, for example Delaware.
customer_reference:
type: string
maxLength: 255
description: Your own label for this account. Enter any reference that helps you find it in your records. Telnyx
does not use it during vetting.
example: internal-id-12345
primary_business_domain_sic_code:
type: string
nullable: true
description: The 4-digit Standard Industrial Classification code for your main line of business, which tells us
what industry you operate in. Look it up in the SIC code directory if you are unsure.
corporate_registration_number:
type: string
nullable: true
description: The official number your company received when it was legally registered or incorporated (for example
from your state or national business registry). It is on your certificate of incorporation.
professional_license_number:
type: string
nullable: true
description: If your business operates under a professional license (for example legal, medical, or financial services),
enter the license number issued by the licensing authority. Leave blank if it does not apply.
dun_bradstreet_number:
type: string
nullable: true
description: Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business.
Leave blank if you do not have one.
organization_contact:
$ref: '#/components/schemas/OrganizationContact'
billing_contact:
$ref: '#/components/schemas/BillingContact'
organization_physical_address:
$ref: '#/components/schemas/PhysicalAddress'
billing_address:
$ref: '#/components/schemas/BillingAddress'
EnterpriseEmailVerificationConfirmRequest:
type: object
required:
- code
properties:
code:
type: string
minLength: 6
maxLength: 6
pattern: ^\d{6}$
description: The 6-digit code sent to the enterprise account's contact email.
example: '482915'
EnterpriseEmailVerificationStatus:
type: object
description: Verification state for an enterprise account's contact email.
required:
- record_type
- email_verified
- status
properties:
record_type:
type: string
enum:
- email_verification
description: Always `email_verification`.
example: email_verification
readOnly: true
email_verified:
type: boolean
description: Whether the enterprise account's contact email has been confirmed.
example: false
status:
type: string
enum:
- sent
- verified
description: '`sent` after a code is emailed; `verified` after a successful confirm.'
example: sent
expires_at:
type: string
format: date-time
nullable: true
description: When the code just sent stops being accepted. Present on a send response; null on a confirm response.
example: '2026-07-30T17:15:00Z'
readOnly: true
sends_remaining_today:
type: integer
nullable: true
description: How many more codes may be requested for this enterprise account today. Present on a send response;
null on a confirm response.
example: 9
readOnly: true
EnterpriseEmailVerificationStatusWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EnterpriseEmailVerificationStatus'
EnterpriseListPublic:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EnterprisePublic'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
EnterprisePublic:
type: object
properties:
id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
readOnly: true
legal_name:
type: string
example: Acme Plumbing LLC
description: Your business's full registered legal name, exactly as it appears on your incorporation or tax documents,
3 to 64 characters.
organization_type:
type: string
example: commercial
country_code:
type: string
example: US
role_type:
type: string
enum:
- enterprise
- bpo
example: enterprise
website:
type: string
example: https://acmeplumbing.example.com
description: Your business's public website address, including https://. Leave blank if your business has no website.
fein:
type: string
example: 12-3456789
description: US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent.
industry:
type: string
example: technology
description: The industry your business operates in. Choose the closest match from the list; if your value is not
accepted, pick the nearest category.
number_of_employees:
type: string
example: 51-200
description: Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current
employee count.
organization_legal_type:
type: string
example: llc
description: 'Legal-entity form. Pick the form that matches your incorporation documents:
- `corporation` - C-corp or S-corp.
- `llc` - limited liability company.
- `partnership` - general/limited partnership.
- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.
- `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional
documents during vetting.'
doing_business_as:
type: string
example: Acme Plumbing
description: The trade name your business operates under if it is different from your legal name, also called a
Doing Business As (DBA) name. Leave blank if you only use your legal name.
jurisdiction_of_incorporation:
type: string
example: Delaware
description: The state, province, or country where your business was legally incorporated, for example Delaware.
customer_reference:
type: string
description: Your own label for this account. Enter any reference that helps you find it in your records. Telnyx
does not use it during vetting.
example: internal-id-12345
primary_business_domain_sic_code:
type: string
nullable: true
description: The 4-digit Standard Industrial Classification code for your main line of business, which tells us
what industry you operate in. Look it up in the SIC code directory if you are unsure.
example: null
corporate_registration_number:
type: string
nullable: true
description: The official number your company received when it was legally registered or incorporated (for example
from your state or national business registry). It is on your certificate of incorporation.
example: null
professional_license_number:
type: string
nullable: true
description: If your business operates under a professional license (for example legal, medical, or financial services),
enter the license number issued by the licensing authority. Leave blank if it does not apply.
example: null
dun_bradstreet_number:
type: string
nullable: true
description: Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business.
Leave blank if you do not have one.
example: null
organization_contact:
$ref: '#/components/schemas/OrganizationContact'
billing_contact:
$ref: '#/components/schemas/BillingContact'
organization_physical_address:
$ref: '#/components/schemas/PhysicalAddress'
billing_address:
$ref: '#/components/schemas/BillingAddress'
created_at:
type: string
format: date-time
example: '2026-04-26T18:06:51.940749Z'
readOnly: true
updated_at:
type: string
format: date-time
example: '2026-04-26T18:09:24.785211Z'
readOnly: true
branded_calling_enabled:
type: boolean
description: True once Branded Calling has been activated on this enterprise (see `POST /enterprises/{id}/branded_calling`).
number_reputation_enabled:
type: boolean
description: True once Phone Number Reputation has been enabled on this enterprise (see `POST /enterprises/{id}/reputation`).
bpo_verification_status:
type: string
enum:
- pending
- approved
- rejected
nullable: true
description: Whether Telnyx has approved this BPO (Business Process Outsourcer) account. Only set for accounts created
with `role_type` `bpo`; `null` for normal enterprises. A BPO enterprise must be `approved` before a DIR can be
linked to it through `bpo_authorizations`.
example: approved
bpo_verification_rejection_reason:
type: string
nullable: true
description: Reason Telnyx rejected the BPO (Business Process Outsourcer) verification, when `bpo_verification_status`
is `rejected`; `null` otherwise.
example: Business registration document could not be verified.
EnterprisePublicWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EnterprisePublic'
EnterpriseReputationCreate:
type: object
required:
- loa_document_id
additionalProperties: false
properties:
loa_document_id:
type: string
minLength: 1
maxLength: 255
description: Id of the signed Letter of Authorization document, returned by the Telnyx Documents API after upload
(upload via `POST /v2/documents`; see https://developers.telnyx.com/api/documents).
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
check_frequency:
allOf:
- $ref: '#/components/schemas/ReputationCheckFrequency'
default: business_daily
description: Refresh cadence. Defaults to `business_daily` if omitted.
EnterpriseReputationLoaRender:
type: object
description: All fields optional. The enterprise identity, address, and authorized-representative contact are read from
the enterprise record keyed by the path parameter.
properties:
agent:
$ref: '#/components/schemas/number-reputation_AgentInput'
signature:
$ref: '#/components/schemas/LoaSignaturePayload'
EnterpriseReputationLoaUpdate:
type: object
required:
- loa_document_id
properties:
loa_document_id:
type: string
minLength: 1
maxLength: 255
description: Id of the new signed LOA document (from the Telnyx Documents API). Changing it resets LOA approval;
the new document must be approved before more numbers can be added.
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
EnterpriseReputationPublic:
type: object
properties:
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
status:
$ref: '#/components/schemas/ReputationStatus'
check_frequency:
$ref: '#/components/schemas/ReputationCheckFrequency'
loa_document_id:
type:
- string
- 'null'
description: Id of the signed LOA document.
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
loa_status:
$ref: '#/components/schemas/ReputationLoaStatusPublic'
rejection_reasons:
type:
- array
- 'null'
items:
type: string
description: Populated when `status` is `rejected`.
external_verification_status:
anyOf:
- $ref: '#/components/schemas/ExternalVerificationStatus'
- type: 'null'
description: Review state of the enterprise's ownership proof for numbers hosted with another provider. `null` when
no proof was submitted.
webhook_url:
type:
- string
- 'null'
format: uri
description: HTTPS URL that receives number-ownership webhook events for this enterprise.
example: https://example.com/webhooks/telnyx
created_at:
type: string
format: date-time
example: '2026-04-26T18:06:51.940749Z'
readOnly: true
updated_at:
type: string
format: date-time
example: '2026-04-26T18:09:24.785211Z'
readOnly: true
EnterpriseReputationPublicWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/EnterpriseReputationPublic'
EnterpriseReputationUpdateFrequency:
type: object
required:
- check_frequency
additionalProperties: false
properties:
check_frequency:
$ref: '#/components/schemas/ReputationCheckFrequency'
EnterpriseReputationWebhookUpdate:
type: object
required:
- webhook_url
properties:
webhook_url:
type:
- string
- 'null'
format: uri
maxLength: 2048
description: HTTPS URL on a publicly routable host. Send `null` to stop receiving number-ownership events.
example: https://example.com/webhooks/telnyx
EnterpriseUpdate:
type: object
description: All fields are optional; only the ones supplied are updated. The same field-level rules from `EnterpriseCreateRequest`
apply.
properties:
legal_name:
type: string
description: Your business's full registered legal name, exactly as it appears on your incorporation or tax documents,
3 to 64 characters.
minLength: 3
maxLength: 64
website:
type: string
format: uri
maxLength: 255
description: Your business's public website address, including https://. Leave blank if your business has no website.
fein:
type: string
description: US Federal Employer Identification Number (`NN-NNNNNNN`) or Canadian equivalent.
industry:
type: string
description: The industry your business operates in. Choose the closest match from the list; if your value is not
accepted, pick the nearest category.
enum:
- accounting
- finance
- billing
- collections
- business
- charity
- nonprofit
- communications
- telecom
- customer service
- support
- delivery
- shipping
- logistics
- education
- financial
- banking
- government
- public
- healthcare
- health
- pharmacy
- medical
- insurance
- legal
- law
- notifications
- scheduling
- real estate
- property
- retail
- ecommerce
- sales
- marketing
- software
- technology
- tech
- media
- surveys
- market research
- travel
- hospitality
- hotel
number_of_employees:
type: string
description: Approximate headcount range. Used for vetting heuristics; pick the bucket that contains your current
employee count.
organization_legal_type:
type: string
description: 'Legal-entity form. Pick the form that matches your incorporation documents:
- `corporation` - C-corp or S-corp.
- `llc` - limited liability company.
- `partnership` - general/limited partnership.
- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.
- `other` - anything else (sole proprietorships, government bodies, DBAs, etc.). You may be asked for additional
documents during vetting.'
doing_business_as:
type: string
maxLength: 255
description: The trade name your business operates under if it is different from your legal name, also called a
Doing Business As (DBA) name. Leave blank if you only use your legal name.
customer_reference:
type: string
maxLength: 255
description: Your own label for this account. Enter any reference that helps you find it in your records. Telnyx
does not use it during vetting.
primary_business_domain_sic_code:
type: string
nullable: true
description: The 4-digit Standard Industrial Classification code for your main line of business, which tells us
what industry you operate in. Look it up in the SIC code directory if you are unsure.
corporate_registration_number:
type: string
nullable: true
description: The official number your company received when it was legally registered or incorporated (for example
from your state or national business registry). It is on your certificate of incorporation.
professional_license_number:
type: string
nullable: true
description: If your business operates under a professional license (for example legal, medical, or financial services),
enter the license number issued by the licensing authority. Leave blank if it does not apply.
dun_bradstreet_number:
type: string
nullable: true
description: Your optional 9-digit D-U-N-S Number issued by Dun & Bradstreet, a unique identifier for your business.
Leave blank if you do not have one.
organization_contact:
$ref: '#/components/schemas/OrganizationContact'
billing_contact:
$ref: '#/components/schemas/BillingContact'
organization_physical_address:
$ref: '#/components/schemas/PhysicalAddress'
billing_address:
$ref: '#/components/schemas/BillingAddress'
jurisdiction_of_incorporation:
type: string
maxLength: 255
description: The state, province, or country where your business was legally incorporated, for example Delaware.
example: Delaware
EntityType:
title: EntityType
enum:
- PRIVATE_PROFIT
- PUBLIC_PROFIT
- NON_PROFIT
- GOVERNMENT
- SOLE_PROPRIETOR
description: Entity type behind the brand. This is the form of business establishment.
example: PRIVATE_PROFIT
type: string
EnumObjecToObjecttResponse:
title: EnumObjecToObjecttResponse
type: object
additionalProperties: true
example:
PROFESSIONAL:
industryId: professional-services
displayName: Professional Services
description: Professional services.
REAL_ESTATE:
industryId: real-estate
displayName: Real Estate
description: Buying and Selling of residential and commercial properties.
EnumObjectListResponse:
title: EnumObjectListResponse
type: array
items:
type: object
additionalProperties: true
example:
- networkId: 10000
displayName: string
osrBitmaskIndex: 32
EnumObjectToStringResponse:
title: EnumObjectToStringResponse
type: object
additionalProperties: true
example:
AREIS: AREIS
BANDW: Bandwidth
SINCH: Sinch
EnumPaginatedResponse:
title: EnumPaginatedResponse
type: object
required:
- page
- totalRecords
- records
properties:
page:
type: integer
totalRecords:
type: integer
records:
type: array
items:
type: object
additionalProperties: true
example:
page: 1
totalRecords: 2
records:
- isin: US68243Q1067
iso2: US
symbol: FLWS
exchange: NASDAQ
displayName: 1-800 FLOWERS.COM, Inc.
- isin: US88025U1097
iso2: US
symbol: TXG
exchange: NASDAQ
displayName: 10X GENOMICS INC CLASS A
EnumStringListResponse:
title: EnumStringListResponse
type: array
items:
type: string
example:
- BASIC_ACCOUNT
- SMALL_ACCOUNT
- MEDIUM_ACCOUNT
- LARGE_ACCOUNT
- KEY_ACCOUNT
Error:
required:
- code
- title
properties:
code:
type: string
x-format: int64
title:
type: string
detail:
type: string
description: A human-readable explanation of the error.
description:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
example:
title: Invalid street address
source:
pointer: /street_address
code: '20207'
description: The street address provided is invalid.
type: object
ErrorEnvelope:
type: object
description: Telnyx v2 error envelope.
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
parameter:
type: string
required:
- errors
ErrorFrame:
type: object
description: Server-to-client frame indicating an error during synthesis. The connection is closed shortly after.
properties:
type:
type: string
const: error
description: Frame type identifier.
error:
type: string
description: Error message describing what went wrong.
ErrorItem:
type: object
additionalProperties: false
properties:
code:
type: string
enum:
- invalid_request
- invalid_token_key
- unauthorized
- token_key_blocked
- resource_blocked
- budget_exceeded
- end_user_budget_exceeded
- model_not_in_catalog
- rate_limit_exceeded
- concurrency_limit_exceeded
- not_found
- conflict
- idempotency_conflict
- precondition_failed
- precondition_required
- enforcement_unavailable
- upstream_error
- upstream_timeout
- limit_out_of_range
- prompt_blocked
- response_blocked
- invalid_metadata
- cursor_expired
title:
type: string
detail:
type: string
meta:
type: object
additionalProperties: false
properties:
scope:
$ref: '#/components/schemas/ai-gateway-resources_Scope'
resets_at:
anyOf:
- type: string
format: date-time
- type: 'null'
request_id:
type: string
format: uuid
required:
- request_id
required:
- code
- title
- detail
- meta
ErrorList:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/BlocksErrorObject'
ErrorMeta:
type: object
properties:
url:
type: string
example: https://docs.telnyx.com/api/errors/10005
ErrorObject:
type: object
properties:
code:
type: string
description: Telnyx error code. Send admission errors include account daily quota 10011 and sender-domain ramp code
domain_graduation_limit_exceeded. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from
the framework may use string status codes ('404', '500') instead.
enum:
- '10001'
- '10006'
- '10007'
- '10011'
- '10015'
- '10016'
- '10019'
- domain_graduation_limit_exceeded
- recipient_suppressed
- reputation_suspended
- '404'
- '500'
- '10027'
- '10036'
title:
type: string
detail:
description: Human-readable error detail. Changeset responses may return a structured object.
oneOf:
- type: string
- type: object
additionalProperties: true
source:
type: object
additionalProperties: true
nullable: true
meta:
type: object
additionalProperties: true
nullable: true
description: Additional metadata. Present on 401 errors with a documentation URL.
required:
- code
- title
- detail
ErrorRecord:
type: object
properties:
code:
type: string
description: an application-specific error code, expressed as a stringified 5-digit integer
example: '10003'
title:
type: string
description: a short, human-readable summary of the problem, with NO punctuation, that SHOULD NOT CHANGE from occurrence
to occurrence of the problem, except for purposes of localization
example: Metrics invalid values
detail:
type: string
description: a human-readable explanation specific to this occurrence of the problem. Like title, this field’s value
can be localized
example: 'Available metrics values for sip-trunking: connected,cost,completed,call_sec,attempted,billed_sec.'
source:
$ref: '#/components/schemas/legacy_published_account_billing_usage_reports_SourceResponse'
meta:
$ref: '#/components/schemas/MetaResponse'
ErrorResponse:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
retryable:
type: boolean
required:
- code
- message
- retryable
required:
- error
ErrorSource:
type: object
properties:
parameter:
type: string
example: id
pointer:
type: string
example: /id
Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
type: object
EvaluatorScenario:
type: object
properties:
id:
type: integer
name:
type: string
personality:
type:
- integer
- 'null'
description: ID of the test personality the caller simulates.
personality_name:
type: string
phone_number:
type: string
description: Outbound phone number used to place the simulated call.
expected_outcome_prompt:
type: string
description: What a successful conversation looks like; scored by the expected-outcome metric.
instructions:
type: string
description: What the simulated caller should do during the conversation.
scenario_language:
type:
- string
- 'null'
scenario_type:
type: string
description: 'Type of scenario: workflow, red_teaming_voice, or red_teaming_text.'
tags:
type: array
items:
type: string
agent:
type:
- integer
- 'null'
description: ID of the test agent the scenario runs against.
inbound_phone_number:
type:
- integer
- 'null'
inbound_phone_number_data:
type:
- string
- 'null'
metrics:
type: array
items:
type: integer
description: Metric IDs applied to the scenario.
metric_names:
type: array
items:
type: string
first_message:
type: string
description: First message the simulated caller speaks or sends.
tool_ids:
type: array
items:
type: string
test_profile:
type:
- integer
- 'null'
test_profile_data:
type:
- object
- 'null'
properties:
id:
type: integer
project:
type:
- integer
- 'null'
agent:
type:
- integer
- 'null'
name:
type: string
information:
type:
- object
- 'null'
additionalProperties:
type: string
dynamic_variable_values:
type:
- object
- 'null'
additionalProperties:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
last_updated_by:
type:
- integer
- 'null'
folder_path:
type:
- string
- 'null'
required:
- id
- name
- agent
- created_at
- updated_at
example:
id: 9512
name: Refund escalation flow
personality: 4643
personality_name: Interruptive (High)
phone_number: '+13125550188'
expected_outcome_prompt: The assistant explains the refund policy and offers escalation.
instructions: Call the support line and demand a refund for a damaged product.
scenario_language: en
scenario_type: workflow
tags:
- support
- regression
agent: 1259
inbound_phone_number: null
inbound_phone_number_data: null
metrics:
- 266881
- 266882
metric_names:
- Greeting quality
- Escalation quality
first_message: Hi, I want a refund.
tool_ids: []
test_profile: null
test_profile_data: null
dynamic_variable_values: null
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:04:05.123456Z'
last_updated_by: 1
folder_path: null
EvaluatorScenarioDetail:
type: object
properties:
id:
type: integer
name:
type: string
agent:
type:
- integer
- 'null'
project:
type:
- integer
- 'null'
personality:
type:
- integer
- 'null'
personality_name:
type: string
tags:
type: array
items:
type: string
tool_ids:
type: array
items:
type: string
runs:
type: array
items:
type: integer
metrics:
type: array
items:
type: integer
metric_names:
type: array
items:
type: string
phone_number:
type: string
outbound_phone_number_data:
type:
- object
- 'null'
properties:
id:
type: integer
number:
type: string
phone_number_id:
type: string
first_message:
type: string
inbound_phone_number:
type:
- integer
- 'null'
inbound_phone_number_data:
type:
- object
- 'null'
properties:
id:
type: integer
number:
type: string
phone_number_id:
type: string
instructions:
type: string
simulation_description:
type: string
information_fields:
type:
- object
- 'null'
additionalProperties:
type: string
expected_outcome_prompt:
type: string
scenario_language:
type:
- string
- 'null'
scenario_type:
type: string
suite_type:
type: string
is_predefined:
type: boolean
test_profile:
type:
- integer
- 'null'
test_profile_data:
type:
- object
- 'null'
properties:
id:
type: integer
project:
type:
- integer
- 'null'
agent:
type:
- integer
- 'null'
name:
type: string
information:
type:
- object
- 'null'
additionalProperties:
type: string
dynamic_variable_values:
type:
- object
- 'null'
additionalProperties:
type: string
folder_path:
type:
- string
- 'null'
max_duration:
type:
- integer
- 'null'
required:
- id
- name
- agent
example:
id: 9512
name: Refund escalation flow
agent: 1259
project: null
personality: 4643
personality_name: Interruptive (High)
tags:
- support
- regression
tool_ids: []
runs: []
metrics:
- 266881
- 266882
metric_names:
- AI interrupting user
- Average Pitch (in Hz)
phone_number: '+13125550188'
outbound_phone_number_data: null
first_message: Hi, I want a refund.
inbound_phone_number: null
inbound_phone_number_data: null
instructions: Call the support line and demand a refund for a damaged product.
simulation_description: Simulates an impatient customer demanding a refund.
information_fields: null
expected_outcome_prompt: The assistant explains the refund policy and offers escalation.
scenario_language: en
scenario_type: workflow
suite_type: predefined
is_predefined: false
test_profile: null
test_profile_data: null
dynamic_variable_values: null
folder_path: null
max_duration: null
EvaluatorScenarioListResponse:
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/EvaluatorScenario'
required:
- count
- next
- previous
- results
example:
count: 1
next: null
previous: null
results:
- id: 9512
name: Refund escalation flow
personality: 4643
personality_name: Interruptive (High)
phone_number: '+13125550188'
expected_outcome_prompt: The assistant explains the refund policy and offers escalation.
instructions: Call the support line and demand a refund for a damaged product.
scenario_language: en
scenario_type: workflow
tags:
- support
- regression
agent: 1259
inbound_phone_number: null
inbound_phone_number_data: null
metrics:
- 266881
- 266882
metric_names:
- Greeting quality
- Escalation quality
first_message: Hi, I want a refund.
tool_ids: []
test_profile: null
test_profile_data: null
dynamic_variable_values: null
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:04:05.123456Z'
last_updated_by: 1
folder_path: null
EventData:
properties:
event_id:
type: string
title: Event Id
run_id:
type: string
title: Run Id
type:
$ref: '#/components/schemas/EventType'
summary:
type: string
title: Summary
timestamp:
type: string
format: date-time
title: Timestamp
step_id:
title: Step Id
type: string
agent_id:
title: Agent Id
type: string
payload:
title: Payload
additionalProperties: true
type: object
idempotency_key:
title: Idempotency Key
type: string
type: object
required:
- event_id
- run_id
- type
- summary
- timestamp
title: EventData
EventNode:
type: object
required:
- id
- product
- event_name
- cost
- links
- record
- children
properties:
id:
type: string
description: Event identifier.
product:
type: string
description: Product that generated this event.
event_name:
type: string
description: Name of the event type.
relationship:
oneOf:
- $ref: '#/components/schemas/RelationshipInfo'
- type: 'null'
description: Relationship to the parent node, null for root.
cost:
$ref: '#/components/schemas/CostInfo'
links:
$ref: '#/components/schemas/Links'
record:
type: object
description: The underlying detail record data. Contents vary by record type.
additionalProperties: true
children:
type: array
items:
$ref: '#/components/schemas/EventNode'
description: Child events in the session tree.
EventPaginationMeta:
type: object
properties:
page_size:
type: integer
minimum: 1
maximum: 100
time_range:
$ref: '#/components/schemas/TimeRange'
page_cursor:
type: string
description: Cursor for the next page, when more results are available.
required:
- page_size
- time_range
EventResponse:
properties:
data:
$ref: '#/components/schemas/EventData'
type: object
required:
- data
title: EventResponse
EventStatus:
type: string
enum:
- pending
- in_progress
- completed
- failed
title: EventStatus
EventType:
type: string
enum:
- status_change
- step_started
- step_completed
- step_failed
- tool_call
- tool_result
- message
- error
- custom
title: EventType
EventsListResponse:
properties:
data:
items:
$ref: '#/components/schemas/EventData'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: EventsListResponse
ExecutionMode:
type: string
enum:
- external
- managed
title: ExecutionMode
ExportPortingOrdersCSVReport:
description: The parameters for generating a porting orders CSV report.
type: object
required:
- filters
properties:
filters:
type: object
description: The filters to apply to the export porting order CSV report.
properties:
status__in:
type: array
description: The status of the porting orders to include in the report.
items:
type: string
enum:
- draft
- in-process
- submitted
- exception
- foc-date-confirmed
- cancel-pending
- ported
- cancelled
customer_reference__in:
type: array
description: The customer reference of the porting orders to include in the report.
items:
type: string
example: my-customer-reference
created_at__lt:
type: string
description: The date and time the porting order was created before.
format: date-time
created_at__gt:
type: string
description: The date and time the porting order was created after.
format: date-time
ExportPortoutsCSVReport:
description: The parameters for generating a port-outs CSV report.
type: object
required:
- filters
properties:
filters:
type: object
description: The filters to apply to the export port-out CSV report.
properties:
status__in:
type: array
description: The status of the port-outs to include in the report.
items:
type: string
enum:
- pending
- authorized
- ported
- rejected
- rejected-pending
- canceled
customer_reference__in:
type: array
description: The customer reference of the port-outs to include in the report.
items:
type: string
example: my-customer-reference
end_user_name:
type: string
description: The end user name of the port-outs to include in the report.
example: McPortersen
phone_numbers__overlaps:
type: array
description: A list of phone numbers that the port-outs phone numbers must overlap with.
items:
type: string
example: '+1234567890'
created_at__lt:
type: string
description: The date and time the port-out was created before.
format: date-time
created_at__gt:
type: string
description: The date and time the port-out was created after.
format: date-time
Expression:
title: Expression
description: 'A node in a deterministic expression AST. Exactly one variant is selected by the `type` discriminator.
Terminal variants (`number_literal`, `string_literal`, `bool_literal`, `variable`) bottom out the recursion; `arithmetic`,
`bool_op`, and `comparison` nest further sub-expressions.
Extracted into a single named schema so the recursive union is defined once (was previously inlined at every operand
site).'
oneOf:
- $ref: '#/components/schemas/ComparisonExpression'
- $ref: '#/components/schemas/BooleanOpExpression'
- $ref: '#/components/schemas/ArithmeticExpression'
- $ref: '#/components/schemas/DynamicVariableExpression'
- $ref: '#/components/schemas/StringLiteralExpression'
- $ref: '#/components/schemas/NumberLiteralExpression'
- $ref: '#/components/schemas/BooleanLiteralExpression'
discriminator:
mapping:
arithmetic: '#/components/schemas/ArithmeticExpression'
bool_literal: '#/components/schemas/BooleanLiteralExpression'
bool_op: '#/components/schemas/BooleanOpExpression'
comparison: '#/components/schemas/ComparisonExpression'
number_literal: '#/components/schemas/NumberLiteralExpression'
string_literal: '#/components/schemas/StringLiteralExpression'
variable: '#/components/schemas/DynamicVariableExpression'
propertyName: type
ExpressionCondition:
description: 'Edge condition evaluated as a deterministic expression AST.
The expression is computed against runtime dynamic variables and must
evaluate to a boolean. Prefer this over `LLMCondition` when the rule is
a clean function of known variables — it''s cheaper and predictable.'
example:
expression:
left:
name: user_age
type: variable
op: '>='
right:
type: number_literal
value: 18
type: comparison
type: expression
properties:
expression:
$ref: '#/components/schemas/Expression'
type:
const: expression
title: Type
type: string
required:
- type
- expression
title: ExpressionCondition
type: object
ExternalConnection:
type: object
title: External Connection
properties:
id:
$ref: '#/components/schemas/external-voice-integrations_IntId'
record_type:
type: string
description: Identifies the type of the resource.
example: external_connection
active:
$ref: '#/components/schemas/ConnectionActive'
credential_active:
$ref: '#/components/schemas/CredentialActive'
external_sip_connection:
$ref: '#/components/schemas/ExternalSipConnection'
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/external-voice-integrations_OutboundVoiceProfileId'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
example:
id: '1930241863466354012'
record_type: external_connection
external_sip_connection: zoom
credential_active: false
active: false
created_at: '2022-06-29T19:23:59Z'
updated_at: '2022-06-29T19:39:47Z'
outbound:
outbound_voice_profile_id: '1911630617284445511'
ExternalConnectionPhoneNumber:
type: object
title: Phone number details with relation to an external connection
properties:
ticket_id:
$ref: '#/components/schemas/UUID'
telephone_number:
type: string
description: Phone number in E164 format.
number_id:
type: string
description: Phone number ID from the Telnyx API.
civic_address_id:
type: string
format: uuid
description: Identifies the civic address assigned to the phone number.
location_id:
type: string
format: uuid
description: Identifies the location assigned to the phone number.
displayed_country_code:
type: string
description: The iso country code that will be displayed to the user when they receive a call from this phone number.
acquired_capabilities:
type: array
items:
type: string
enum:
- FirstPartyAppAssignment
- InboundCalling
- Office365
- OutboundCalling
- UserAssignment
description: The capabilities that are available for this phone number on Microsoft Teams.
ExternalLLM:
properties:
model:
type: string
description: Model identifier to use with the external LLM endpoint.
base_url:
type: string
description: Base URL for the external LLM endpoint.
llm_api_key_ref:
type: string
description: Integration secret identifier for the external LLM API key.
authentication_method:
$ref: '#/components/schemas/AuthenticationMethod'
certificate_ref:
type: string
description: Integration secret identifier for the client certificate used with certificate authentication.
token_retrieval_url:
type: string
description: URL used to retrieve an access token when certificate authentication is enabled.
forward_metadata:
type: boolean
default: false
description: 'When `true`, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint as a
top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent
to the external endpoint: `{"extra_metadata": {"customer_name": "Jane", "account_id": "acct_789", "telnyx_agent_target":
"+13125550100", "telnyx_end_user_target": "+13125550123"}}`. Distinct from OpenAI''s native `metadata` field,
which has its own size and type limits.'
type: object
required:
- model
- base_url
title: ExternalLLM
ExternalLLMReq:
properties:
model:
type: string
description: Model identifier to use with the external LLM endpoint.
base_url:
type: string
description: Base URL for the external LLM endpoint.
llm_api_key_ref:
type: string
description: Integration secret identifier for the external LLM API key.
authentication_method:
$ref: '#/components/schemas/AuthenticationMethod'
certificate_ref:
type: string
description: Integration secret identifier for the client certificate used with certificate authentication.
token_retrieval_url:
type: string
description: URL used to retrieve an access token when certificate authentication is enabled.
forward_metadata:
type: boolean
default: false
description: 'When `true`, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint as a
top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent
to the external endpoint: `{"extra_metadata": {"customer_name": "Jane", "account_id": "acct_789", "telnyx_agent_target":
"+13125550100", "telnyx_end_user_target": "+13125550123"}}`. Distinct from OpenAI''s native `metadata` field,
which has its own size and type limits.'
type: object
required:
- model
- base_url
title: ExternalLLMReq
ExternalSipConnection:
title: External SIP Connection
type: string
description: The service that will be consuming this connection.
enum:
- zoom
- operator_connect
default: zoom
example: zoom
ExternalSipConnectionZoomOnly:
title: External SIP Connection
type: string
description: The service that will be consuming this connection.
enum:
- zoom
default: zoom
example: zoom
ExternalVerification:
type: object
properties:
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
status:
$ref: '#/components/schemas/ExternalVerificationStatus'
document_ids:
type: array
items:
type: string
description: The ownership-proof documents on file.
example:
- 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
phone_numbers:
type: array
items:
type: string
description: The phone numbers you listed with the documents.
example:
- '+13125550142'
rejection_reason:
type:
- string
- 'null'
description: Why the proof was rejected. Set only when `status` is `rejected`.
example: The invoice does not show the phone numbers.
submitted_at:
type:
- string
- 'null'
format: date-time
readOnly: true
example: '2026-10-05T09:12:44Z'
reviewed_at:
type:
- string
- 'null'
format: date-time
readOnly: true
example: '2026-10-06T14:03:10Z'
ExternalVerificationStatus:
type: string
enum:
- pending
- approved
- rejected
description: Review state of the ownership proof that allows adding phone numbers hosted with another provider.
example: pending
ExternalVerificationSubmit:
type: object
required:
- document_ids
properties:
document_ids:
type: array
minItems: 1
maxItems: 10
items:
type: string
minLength: 1
maxLength: 255
description: Ids of uploaded documents (Documents API) proving the enterprise owns its phone numbers hosted with
another provider, for example a carrier invoice or account statement.
example:
- 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
phone_numbers:
type: array
maxItems: 1000
items:
type: string
description: Optional. The phone numbers hosted with another provider that the documents cover, in E.164 format.
Shown to the reviewer to match the documents to your numbers; you can still add numbers that are not listed here,
and each is checked on its own.
example:
- '+13125550142'
ExternalVerificationWrapped:
type: object
properties:
data:
$ref: '#/components/schemas/ExternalVerification'
required:
- data
ExternalVetting:
title: ExternalVetting
type: object
properties:
evpId:
title: Evpid
maxLength: 10
type: string
description: External vetting provider ID for the brand.
vettingId:
title: vettingId
type: string
description: Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided
by the vetting provider at time of vetting.
vettingToken:
title: vettingToken
type: string
description: Required by some providers for vetting record confirmation.
vettingScore:
title: vettingScore
type: integer
description: Vetting score ranging from 0-100.
vettingClass:
title: Vettingclass
type: string
description: Identifies the vetting classification.
vettedDate:
title: vettedDate
type: string
description: Vetting effective date. This is the date when vetting was completed, or the starting effective date
in ISO 8601 format. If this date is missing, then the vetting was not complete or not valid.
createDate:
title: createDate
type: string
description: Vetting submission date. This is the date when the vetting request is generated in ISO 8601 format.
ExternalVettingList:
title: External vetting list
type: array
items:
$ref: '#/components/schemas/ExternalVetting'
ExternalWdrDetailRecordDto:
type: object
properties:
id:
type: string
description: WDR id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
created_at:
type: string
description: Record created time
format: date-time
example: '2020-07-01T00:00:00-06:00'
cost:
$ref: '#/components/schemas/WirelessCost'
mcc:
type: string
description: Mobile country code.
example: '204'
mnc:
type: string
description: Mobile network code.
example: '01'
downlink_data:
$ref: '#/components/schemas/DownlinkData'
duration_seconds:
type: number
description: Session duration in seconds.
example: 1
imsi:
type: string
description: International mobile subscriber identity.
example: '123'
rate:
$ref: '#/components/schemas/WirelessRate'
sim_group_name:
type: string
description: Defined sim group name
example: sim name
sim_group_id:
type: string
description: Sim group unique identifier
example: f05a189f-7c46-4531-ac56-1460dc465a42
sim_card_id:
type: string
description: Sim card unique identifier
example: 877f80a6-e5b2-4687-9a04-88076265720f
phone_number:
type: string
description: Phone number
example: '+12345678910'
uplink_data:
$ref: '#/components/schemas/UplinkData'
record_type:
type: string
example: wdr
ExternalWdrGetDetailResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ExternalWdrDetailRecordDto'
meta:
$ref: '#/components/schemas/wireless-public_PaginationMeta'
FallbackConfig:
properties:
model:
type: string
description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.
llm_api_key_ref:
type: string
description: Integration secret identifier for the fallback model API key.
external_llm:
$ref: '#/components/schemas/ExternalLLM'
type: object
title: FallbackConfig
FallbackConfigReq:
properties:
model:
type: string
description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable.
llm_api_key_ref:
type: string
description: Integration secret identifier for the fallback model API key.
external_llm:
$ref: '#/components/schemas/ExternalLLMReq'
type: object
title: FallbackConfigReq
Fax:
type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
example: fax
enum:
- fax
id:
$ref: '#/components/schemas/Id'
connection_id:
$ref: '#/components/schemas/ConnectionId'
direction:
$ref: '#/components/schemas/Direction'
media_url:
$ref: '#/components/schemas/MediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
from_display_name:
description: The string used as the caller id name (SIP From Display Name) presented to the destination (`to` number).
type: string
example: Company Name
quality:
$ref: '#/components/schemas/Quality'
status:
description: Status of the fax
type: string
example: queued
enum:
- queued
- media.processed
- originated
- sending
- delivered
- failed
- initiated
- receiving
- media.processing
- received
webhook_url:
description: URL that will receive fax webhooks
type: string
webhook_failover_url:
description: Optional failover URL that will receive fax webhooks if webhook_url doesn't return a 2XX response
type: string
store_media:
description: Should fax media be stored on temporary URL. It does not support media_name.
type: boolean
stored_media_url:
description: If store_media was set to true, this is a link to temporary location. Link expires after 10 minutes.
type: string
preview_url:
description: If `store_preview` was set to `true`, this is a link to temporary location. Link expires after 10 minutes.
type: string
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
created_at:
description: ISO 8601 timestamp when resource was created
type: string
format: date-time
updated_at:
description: ISO 8601 timestamp when resource was updated
type: string
format: date-time
failure_reason:
description: 'Customer-facing failure reason for the fax. Present on every fax object (null when the fax has not
failed). Mapped from the more granular `internal_failure_reason`. Common values include: `receiver_call_dropped`,
`sender_call_dropped`, `sender_canceled`, `carrier_lost`, `service_unavailable`, `fax_signaling_error`, `receiver_communication_error`,
`sender_communication_error`, `receiver_decline`, `receiver_recovery_on_timer_expire`, `receiver_no_response`,
`receiver_invalid_number_format`, `receiver_no_answer`, `receiver_incompatible_destination`, `receiver_unallocated_number`,
`destination_unreachable`, `user_busy`, `invalid_ecm_response_from_receiver`, `fax_initial_communication_timeout`,
`destination_not_in_service_plan`, `account_disabled`, `destination_invalid`, `no_outbound_profile`, `destination_not_in_countries_whitelist`,
`user_channel_limit_exceeded`, `outbound_profile_channel_limit_exceeded`, `connection_channel_limit_exceeded`,
`outbound_profile_daily_spend_limit_exceeded`, `unverified_origination_number`, `unverified_destination_not_allowed`,
`file_format_invalid`, `file_download_failed`, `file_size_limit_exceeded`, `page_count_limit_exceeded`, `media_processing_exception`.'
type:
- string
- 'null'
example: null
internal_failure_reason:
description: Internal, more granular failure reason for the fax. Present on every fax object (null when the fax
has not failed). Useful for deeper debugging beyond the customer-facing `failure_reason`.
type:
- string
- 'null'
example: null
example:
record_type: fax
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
connection_id: c-1
direction: outbound
from: '+123'
to: '+456'
media_url: http://www.example.com/fax.pdf
store_media: true
stored_media_url: https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51
preview_url: https://s3.amazonaws.com/faxes-dev/user-1/cf4a6b52-bf8e-4945-9f49-611d0d2b083b_preview.tiff?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=xxxxxxxxxx%2F20200505%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200505T095917Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Signature=fac2af40464fcc77673ad762db86e34f9c1b91a82699b5578c5327f53874df51
quality: high
webhook_url: http://www.example.com/webhooks
webhook_failover_url: ''
status: queued
failure_reason: null
internal_failure_reason: null
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
created_at: '2020-05-05T09:59:12Z'
updated_at: '2020-05-05T09:59:12Z'
FaxApplication:
type: object
title: Fax Application
properties:
id:
$ref: '#/components/schemas/IntId'
record_type:
type: string
description: Identifies the type of the resource.
example: fax_application
application_name:
$ref: '#/components/schemas/ApplicationName'
active:
$ref: '#/components/schemas/ConnectionActive'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
webhook_event_url:
$ref: '#/components/schemas/WebhookEventUrl'
webhook_event_failover_url:
$ref: '#/components/schemas/WebhookEventFailoverUrl'
webhook_timeout_secs:
$ref: '#/components/schemas/WebhookTimeoutSecs'
tags:
type: array
items:
type: string
description: Tags associated with the Fax Application.
example:
- tag1
- tag2
default: []
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with
this connection.
default: null
example: 10
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way
a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called
from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
default: null
example: example
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
example: only_my_connections
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/OutboundVoiceProfileId'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
example:
id: '1293384261075731499'
record_type: fax_application
application_name: fax-router
active: false
anchorsite_override: Amsterdam, Netherlands
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_timeout_secs: 25
inbound:
channel_limit: 10
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
FaxDelivered:
type: object
example:
data:
event_type: fax.delivered
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
call_duration_secs: 25
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
page_count: 2
status: delivered
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
properties:
data:
type: object
properties:
record_type:
$ref: '#/components/schemas/programmable-fax_RecordType'
id:
$ref: '#/components/schemas/Id'
occurred_at:
type: string
format: date-time
description: ISO 8601 datetime of when the event occurred.
example: '2020-05-05T13:08:22.039204Z'
event_type:
type: string
example: fax.delivered
enum:
- fax.delivered
description: The type of event being delivered.
payload:
type: object
properties:
call_duration_secs:
description: The duration of the call in seconds.
type: integer
example: 25
connection_id:
$ref: '#/components/schemas/ConnectionId'
direction:
$ref: '#/components/schemas/Direction'
fax_id:
$ref: '#/components/schemas/FaxId'
original_media_url:
$ref: '#/components/schemas/OriginalMediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
user_id:
$ref: '#/components/schemas/UserId'
page_count:
description: Number of transferred pages
type: integer
example: 2
status:
type: string
example: delivered
enum:
- delivered
description: The status of the fax.
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
meta:
type: object
description: Metadata about the webhook delivery.
properties:
attempt:
type: integer
description: The delivery attempt number.
example: 1
delivered_to:
type: string
format: uri
description: The URL the webhook was delivered to.
example: https://www.example.com/webhooks
FaxEmailRecipient:
title: Fax Email Recipient
type:
- string
- 'null'
description: Specifies an email address where faxes sent to this application will be forwarded to (as pdf or tiff attachments)
default: null
example: user@example.com
FaxFailed:
type: object
example:
data:
event_type: fax.failed
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
failure_reason: receiver_call_dropped
internal_failure_reason: fs_fax_call_dropped
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: failed
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
properties:
data:
type: object
properties:
record_type:
$ref: '#/components/schemas/programmable-fax_RecordType'
id:
$ref: '#/components/schemas/Id'
occurred_at:
type: string
format: date-time
description: ISO 8601 datetime of when the event occurred.
example: '2020-05-05T13:08:22.039204Z'
event_type:
type: string
example: fax.failed
enum:
- fax.failed
description: The type of event being delivered.
payload:
type: object
properties:
connection_id:
$ref: '#/components/schemas/ConnectionId'
direction:
$ref: '#/components/schemas/Direction'
fax_id:
$ref: '#/components/schemas/FaxId'
original_media_url:
$ref: '#/components/schemas/OriginalMediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
user_id:
$ref: '#/components/schemas/UserId'
failure_reason:
type: string
description: Customer-facing cause of the fax failure. Mapped from the more granular `internal_failure_reason`.
example: receiver_call_dropped
internal_failure_reason:
type: string
description: Internal, more granular cause of the fax failure. Useful for deeper debugging beyond the customer-facing
`failure_reason`.
example: fs_fax_call_dropped
status:
type: string
example: failed
enum:
- failed
description: The status of the fax.
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
meta:
type: object
description: Metadata about the webhook delivery.
properties:
attempt:
type: integer
description: The delivery attempt number.
example: 1
delivered_to:
type: string
format: uri
description: The URL the webhook was delivered to.
example: https://www.example.com/webhooks
FaxId:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the fax.
FaxMediaProcessed:
type: object
example:
data:
event_type: fax.media.processed
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: media.processed
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
properties:
data:
type: object
properties:
record_type:
$ref: '#/components/schemas/programmable-fax_RecordType'
id:
$ref: '#/components/schemas/Id'
occurred_at:
type: string
format: date-time
description: ISO 8601 datetime of when the event occurred.
example: '2020-05-05T13:08:22.039204Z'
event_type:
type: string
example: fax.media.processed
enum:
- fax.media.processed
description: The type of event being delivered.
payload:
type: object
properties:
connection_id:
$ref: '#/components/schemas/ConnectionId'
direction:
$ref: '#/components/schemas/Direction'
fax_id:
$ref: '#/components/schemas/FaxId'
original_media_url:
$ref: '#/components/schemas/OriginalMediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
user_id:
$ref: '#/components/schemas/UserId'
status:
type: string
example: media.processed
enum:
- media.processed
description: The status of the fax.
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
meta:
type: object
description: Metadata about the webhook delivery.
properties:
attempt:
type: integer
description: The delivery attempt number.
example: 1
delivered_to:
type: string
format: uri
description: The URL the webhook was delivered to.
example: https://www.example.com/webhooks
FaxQueued:
type: object
example:
data:
event_type: fax.queued
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: queued
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
properties:
data:
type: object
properties:
record_type:
$ref: '#/components/schemas/programmable-fax_RecordType'
id:
$ref: '#/components/schemas/Id'
occurred_at:
type: string
format: date-time
description: ISO 8601 datetime of when the event occurred.
example: '2020-05-05T13:08:22.039204Z'
event_type:
type: string
example: fax.queued
enum:
- fax.queued
description: The type of event being delivered.
payload:
type: object
properties:
connection_id:
$ref: '#/components/schemas/ConnectionId'
direction:
$ref: '#/components/schemas/Direction'
fax_id:
$ref: '#/components/schemas/FaxId'
original_media_url:
$ref: '#/components/schemas/OriginalMediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
user_id:
$ref: '#/components/schemas/UserId'
status:
type: string
example: queued
enum:
- queued
description: The status of the fax.
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
meta:
type: object
description: Metadata about the webhook delivery.
properties:
attempt:
type: integer
description: The delivery attempt number.
example: 1
delivered_to:
type: string
format: uri
description: The URL the webhook was delivered to.
example: https://www.example.com/webhooks
FaxSendingStarted:
type: object
example:
data:
event_type: fax.sending.started
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: sending
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
properties:
data:
type: object
properties:
record_type:
$ref: '#/components/schemas/programmable-fax_RecordType'
id:
$ref: '#/components/schemas/Id'
occurred_at:
type: string
format: date-time
description: ISO 8601 datetime of when the event occurred.
example: '2020-05-05T13:08:22.039204Z'
event_type:
type: string
example: fax.sending.started
enum:
- fax.sending.started
description: The type of event being delivered.
payload:
type: object
properties:
connection_id:
$ref: '#/components/schemas/ConnectionId'
direction:
$ref: '#/components/schemas/Direction'
fax_id:
$ref: '#/components/schemas/FaxId'
original_media_url:
$ref: '#/components/schemas/OriginalMediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
user_id:
$ref: '#/components/schemas/UserId'
status:
type: string
example: sending
enum:
- sending
description: The status of the fax.
client_state:
description: State received from a command.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
meta:
type: object
description: Metadata about the webhook delivery.
properties:
attempt:
type: integer
description: The delivery attempt number.
example: 1
delivered_to:
type: string
format: uri
description: The URL the webhook was delivered to.
example: https://www.example.com/webhooks
Feature:
properties:
name:
type: string
example: sms
example:
name: sms
type: object
FieldMapping:
type: object
required:
- local_field
- parent_field
properties:
local_field:
type: string
description: Field name on the child record.
parent_field:
type: string
description: Field name on the parent record.
FillAction:
type: object
description: Type text into the element identified by observation_id + ref.
required:
- type
- observation_id
- ref
- value
properties:
type:
const: fill
observation_id:
type: string
minLength: 1
ref:
type: string
minLength: 1
value:
type: string
maxLength: 4096
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
Filter:
type: object
description: 'Query filter criteria. Note: The first filter object must specify filter_type as ''and''. You cannot follow
an ''or'' with another ''and''.'
properties:
filter_type:
type: string
description: Logical operator for combining filters
enum:
- and
- or
cli:
type: string
description: Calling line identification (caller ID)
example: '+13129457420'
cli_filter:
type: string
description: Filter type for CLI matching
enum:
- contains
- starts_with
- ends_with
cld:
type: string
description: Called line identification (destination number)
example: '+13129457420'
cld_filter:
type: string
description: Filter type for CLD matching
enum:
- contains
- starts_with
- ends_with
tags_list:
type: string
description: Tag name to filter by
example: tag1
billing_group:
type: string
description: Billing group UUID to filter by
example: adfaa016-f921-4b6c-97bb-e4c1dad231c5
FinalFrame:
type: object
description: Server-to-client frame indicating synthesis is complete for the current text.
properties:
type:
type: string
const: final
description: Frame type identifier.
audio:
type: 'null'
description: Always `null` for the final frame.
text:
type: string
description: Empty string.
isFinal:
type: boolean
description: Always `true`.
const: true
timeToFirstAudioFrameMs:
type: integer
description: Present if this was the first response frame.
FineTuningJob:
type: object
title: FineTuningJob
description: The `fine_tuning.job` object represents a fine-tuning job that has been created through the API.
properties:
id:
type: string
description: The name of the fine-tuned model that is being created.
created_at:
type: integer
description: The Unix timestamp (in seconds) for when the fine-tuning job was created.
finished_at:
type:
- integer
- 'null'
description: The Unix timestamp (in seconds) for when the fine-tuning job was finished. The value will be null if
the fine-tuning job is still running.
hyperparameters:
type: object
description: The hyperparameters used for the fine-tuning job.
properties:
n_epochs:
type: integer
minimum: 1
maximum: 10
default: 3
description: The number of epochs to train the model for. An epoch refers to one full cycle through the training
dataset.
required:
- n_epochs
model:
type: string
description: The base model that is being fine-tuned.
organization_id:
type: string
description: The organization that owns the fine-tuning job.
status:
type: string
description: The current status of the fine-tuning job.
enum:
- queued
- running
- succeeded
- failed
- cancelled
trained_tokens:
type:
- integer
- 'null'
description: The total number of billable tokens processed by this fine-tuning job. The value will be null if the
fine-tuning job is still running.
training_file:
type: string
description: The storage bucket or object used for training.
required:
- created_at
- finished_at
- hyperparameters
- id
- model
- organization_id
- status
- trained_tokens
- training_file
FineTuningJobsListData:
properties:
data:
items:
$ref: '#/components/schemas/FineTuningJob'
type: array
type: object
required:
- data
title: FineTuningJobListData
FirstCommandTimeout:
title: First Command Timeout
type: boolean
description: Specifies whether calls to phone numbers associated with this connection should hangup after timing out.
default: false
example: true
FirstCommandTimeoutSecs:
title: First Command Timeout Secs
type: integer
description: Specifies how many seconds to wait before timing out a dial command.
default: 30
example: 10
FlowEdge:
description: 'Directed transition from one node to a target, gated by a condition.
The target is either another node in the same flow (`NodeTarget`) or a
different assistant (`AssistantTarget`). Multiple edges may share a
`start_node_id`. On calls, `expression` conditions are evaluated before
the model turn and take precedence over `llm` conditions regardless of
declaration order, while `llm` conditions are offered to the assistant''s
model as transition tools and fire when the model selects one. On chat
channels, an `expression` condition that is true when the turn begins
routes before the reply is generated; all conditioned edges that remain
are considered together in declaration order after the reply, and the
first true one wins.'
properties:
condition:
description: 'Condition that gates the transition. Discriminated by `type`: `llm`, `expression`.'
discriminator:
mapping:
expression: '#/components/schemas/ExpressionCondition'
llm: '#/components/schemas/LLMCondition'
default: '#/components/schemas/DefaultCondition'
propertyName: type
oneOf:
- $ref: '#/components/schemas/LLMCondition'
- $ref: '#/components/schemas/ExpressionCondition'
- $ref: '#/components/schemas/DefaultCondition'
title: Condition
id:
description: Caller-supplied unique identifier for this edge within the flow.
example: e_age_gate
title: Id
type: string
start_node_id:
description: ID of the node this edge transitions away from.
title: Start Node Id
type: string
target:
description: 'Destination of the transition. Discriminated by `type`: `node` (jump to another node in this flow)
or `assistant` (hand off to a different assistant).'
discriminator:
mapping:
assistant: '#/components/schemas/AssistantTarget'
node: '#/components/schemas/NodeTarget'
propertyName: type
oneOf:
- $ref: '#/components/schemas/NodeTarget'
- $ref: '#/components/schemas/AssistantTarget'
title: Target
required:
- id
- start_node_id
- target
- condition
title: FlowEdge
type: object
FlowNode:
description: One step in a conversation flow, as returned by the API.
properties:
external_llm:
$ref: '#/components/schemas/ExternalLLM'
description: Override for `Assistant.external_llm` while this node is active. Use this to route a node's turns to
a different external LLM (different `model`, `base_url`, credentials). Part of the LLM bundle — see `model` for
cascade semantics. Mutually exclusive with `model` on the node (a single LLM identity per node).
id:
description: Caller-supplied unique identifier for this node within the flow.
title: Id
type: string
instructions:
description: Prompt that drives the LLM while this node is active. Required.
title: Instructions
type: string
instructions_mode:
default: replace
description: 'How `instructions` combine with the assistant-level instructions. `replace` (default): the node''s
instructions are used alone. `append`: the node''s instructions are concatenated after the assistant''s instructions.'
enum:
- replace
- append
title: Instructions Mode
type: string
llm_api_key_ref:
description: Override for `Assistant.llm_api_key_ref` while this node is active. Part of the LLM bundle — see `model`
for cascade semantics.
title: Llm Api Key Ref
type: string
model:
description: 'Override for `Assistant.model` while this node is active. Part of the LLM bundle (`model` + `llm_api_key_ref`
+ `external_llm`): when any of the three is set on the node, all three are taken from the node and the assistant-level
LLM identity is not consulted. When none of the three is set, the assistant''s bundle cascades unchanged.'
title: Model
type: string
name:
description: Optional human-readable label, displayed in authoring UIs.
title: Name
type: string
position:
$ref: '#/components/schemas/NodePosition'
description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips
so frontends can persist graph layout across reloads.
shared_tool_ids:
description: IDs of shared (org-level) tools available at this node. Knowledge bases are attached the same way —
via a shared retrieval tool. Tools not listed here are not callable while this node is active.
items:
type: string
title: Shared Tool Ids
type: array
tools:
description: Full tool definitions for this node, resolved from `shared_tool_ids` server-side. Populated on responses
so clients can render the flow without a follow-up fetch per shared tool. Ignored on input — set `shared_tool_ids`
to configure a node's tools.
items:
$ref: '#/components/schemas/AssistantTools'
title: Tools
type: array
tools_mode:
default: replace
description: 'How `shared_tool_ids` combine with the assistant-level tool set. `replace` (default): only the node''s
tools are callable. `append`: the node''s tools are added to the assistant''s tools. Ignored when `shared_tool_ids`
is null.'
enum:
- replace
- append
title: Tools Mode
type: string
transcription:
$ref: '#/components/schemas/TranscriptionSettings'
description: Per-node transcription override (response form).
type:
const: prompt
default: prompt
description: Node kind discriminator. `prompt` is an LLM-driven step.
title: Type
type: string
voice_settings:
$ref: '#/components/schemas/inference-embedding_VoiceSettings'
description: Per-node voice override (response form).
required:
- id
- instructions
title: FlowNode
type: object
FlowNodeReq:
description: 'One step in a conversation flow, as supplied by API clients.
Each node carries the prompt, tool scope, and optional overrides for
model/voice/transcription. Unset overrides cascade from the assistant.'
example:
id: n_intake
instructions: Greet the caller and ask what they're calling about.
name: Intake
position:
x: 120
y: 80
shared_tool_ids:
- tool-faq-kb
type: prompt
properties:
external_llm:
$ref: '#/components/schemas/ExternalLLMReq'
description: Override for `Assistant.external_llm` while this node is active. Use this to route a node's turns to
a different external LLM (different `model`, `base_url`, credentials). Part of the LLM bundle — see `model` for
cascade semantics. Mutually exclusive with `model` on the node (a single LLM identity per node).
id:
description: Caller-supplied unique identifier for this node within the flow.
example: n_intake
title: Id
type: string
instructions:
description: Prompt that drives the LLM while this node is active. Required.
example: Greet the caller and ask what they're calling about.
title: Instructions
type: string
instructions_mode:
default: replace
description: 'How `instructions` combine with the assistant-level instructions. `replace` (default): the node''s
instructions are used alone. `append`: the node''s instructions are concatenated after the assistant''s instructions.'
enum:
- replace
- append
title: Instructions Mode
type: string
llm_api_key_ref:
description: Override for `Assistant.llm_api_key_ref` while this node is active. Part of the LLM bundle — see `model`
for cascade semantics.
example: my-key-ref
title: Llm Api Key Ref
type: string
model:
description: 'Override for `Assistant.model` while this node is active. Part of the LLM bundle (`model` + `llm_api_key_ref`
+ `external_llm`): when any of the three is set on the node, all three are taken from the node and the assistant-level
LLM identity is not consulted. When none of the three is set, the assistant''s bundle cascades unchanged.'
example: moonshotai/Kimi-K2.6
title: Model
type: string
name:
description: Optional human-readable label, displayed in authoring UIs.
example: Intake
title: Name
type: string
position:
$ref: '#/components/schemas/NodePosition'
description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips
so frontends can persist graph layout across reloads.
example:
x: 120
y: 80
shared_tool_ids:
description: IDs of shared (org-level) tools available at this node. Knowledge bases are attached the same way —
via a shared retrieval tool. Tools not listed here are not callable while this node is active.
example:
- tool-faq-kb
- tool-billing-lookup
items:
type: string
title: Shared Tool Ids
type: array
tools_mode:
default: replace
description: 'How `shared_tool_ids` combine with the assistant-level tool set. `replace` (default): only the node''s
tools are callable. `append`: the node''s tools are added to the assistant''s tools. Ignored when `shared_tool_ids`
is null.'
enum:
- replace
- append
title: Tools Mode
type: string
transcription:
$ref: '#/components/schemas/TranscriptionSettings'
description: Per-node transcription override (model/language/region). Unset fields cascade from the assistant-level
transcription. A node that sets `model`, `fallback_models`, or `challenger` doesn't inherit the assistant's `fallback_models`
or `challenger`; it uses only the ones it sets. Otherwise it inherits them, and they must fit the model and language
the node runs; a change they no longer fit is rejected.
type:
const: prompt
default: prompt
description: Node kind discriminator. `prompt` (default) is an LLM-driven step; `tool` is a standalone tool execution
and `speak` a scripted message (see `ToolNodeReq` / `SpeakNodeReq`).
title: Type
type: string
voice_settings:
$ref: '#/components/schemas/inference-embedding_VoiceSettings'
description: Per-node voice override. Only fields set here override the assistant-level voice settings; unset fields
cascade.
required:
- id
- instructions
title: FlowNodeReq
type: object
ForbiddenError:
allOf:
- $ref: '#/components/schemas/GenericError'
- properties:
code:
example: '10010'
type: string
title:
example: Authorization failed
type: string
detail:
example: You do not have permission to perform the requested action on the specified resource or resources.
type: string
meta:
type: object
properties:
url:
type: string
example: https://developers.telnyx.com/docs/overview/errors/10010
type: object
ForgetResponse:
properties:
data:
$ref: '#/components/schemas/ForgottenProfile'
type: object
required:
- data
title: ForgetResponse
ForgetSourceResponse:
properties:
data:
$ref: '#/components/schemas/ForgottenSource'
type: object
required:
- data
title: ForgetSourceResponse
ForgottenProfile:
properties:
profile_id:
type: string
title: Profile Id
memories_deleted:
type: integer
title: Memories Deleted
description: 'Memories the profile held and no longer does, counted before and after. A report rather than an audit:
memory moves in the background between the two counts. The status carries the outcome.'
type: object
required:
- profile_id
- memories_deleted
title: ForgottenProfile
ForgottenSource:
properties:
profile_id:
type: string
title: Profile Id
source_id:
type: string
title: Source Id
description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by
`ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.'
memories_deleted:
type: integer
title: Memories Deleted
description: 'Memories the profile held and no longer does, counted before and after across the whole profile: it
includes memories derived from this source together with others, and anything else the profile lost in between.
A report rather than an audit. The status carries the outcome.'
type: object
required:
- profile_id
- source_id
- memories_deleted
title: ForgottenSource
ForwardEmailInboxMessageRequest:
type: object
properties:
to:
$ref: '#/components/schemas/RequiredInboxActionRecipientInput'
cc:
$ref: '#/components/schemas/InboxActionRecipientInput'
bcc:
$ref: '#/components/schemas/InboxActionRecipientInput'
text:
type: string
description: Optional plain-text note prepended to the generated forwarded-message block. Blank values are treated
as omitted.
html:
type: string
description: Optional HTML note prepended to the generated forwarded-message block. Blank values are treated as
omitted.
required:
- to
Fqdn:
type: object
title: Fqdn
properties:
id:
type: string
description: Identifies the resource.
example: '1293384261075731499'
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: fqdn
connection_id:
type: string
description: ID of the FQDN connection to which this FQDN is attached.
fqdn:
type: string
description: FQDN represented by this resource.
example: example.com
port:
type: integer
description: Port to use when connecting to this FQDN.
default: 5060
example: 5060
dns_record_type:
type: string
description: The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'.
For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not
specified, 5060 will be used.
example: a
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
example:
id: '1293384261075731499'
record_type: fqdn
connection_id: '1516447646313612565'
fqdn: example.com
port: 5060
dns_record_type: a
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
FqdnAuthentication:
type: object
title: FQDN Authentication
properties:
id:
type: string
description: Identifies the resource.
example: '1293384261075731499'
record_type:
type: string
description: Identifies the type of the resource.
example: fqdn_authentication
connection_id:
type: string
description: The ID of the FQDN connection this authentication strategy belongs to.
example: '1293384261075731499'
user_name:
type: string
description: The username for authentication.
password:
type: string
description: The password for authentication. For primary accounts created on or after September 8, 2026, this password
is returned as `********`. The password is returned in full on create, and on update only when that update changed
the password. Accounts created before September 8, 2026 are unaffected.
ip_authentication_method:
type: string
description: The IP authentication method.
enum:
- token
- p-charge-info
fqdn_outbound_authentication:
type: string
description: The outbound authentication type.
enum:
- ip-authentication
- credential-authentication
webhook_url:
type: string
format: uri
description: The webhook URL for authentication events.
failover_url:
type: string
format: uri
description: The failover webhook URL.
microsoft_teams_sbc:
type: boolean
description: Whether the connection is a Microsoft Teams SBC.
default: false
txt_name:
type: string
description: The TXT record name for Microsoft Teams SBC DNS verification.
txt_value:
type: string
description: The TXT record value for Microsoft Teams SBC DNS verification.
txt_ttl:
type: integer
description: The TTL for the TXT record.
FqdnConnection:
type: object
title: FQDN Connection
required:
- connection_name
properties:
id:
type: string
description: Identifies the resource.
example: '1293384261075731499'
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: fqdn_connection
active:
type: boolean
description: Defaults to true
conversation_persistence:
type: boolean
description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the
connection are transcribed, stored, and indexed. Defaults to false.
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
transport_protocol:
$ref: '#/components/schemas/FqdnConnectionTransportProtocol'
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON
true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled
and does not modify that setting. This API provisions the preference; call-processing behavior is implemented
separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
microsoft_teams_sbc:
type: boolean
description: The connection is enabled for Microsoft Teams Direct Routing.
default: false
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer that the sender and receiver negotiate T38 directly when both are on
the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call according
to each leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
user_name:
type: string
description: The username for the FQDN connection.
password:
type: string
description: The password for the FQDN connection. For primary accounts created on or after September 8, 2026, this
password is returned as `********`. The password is returned in full on create, and on update only when that update
changed the password. Accounts created before September 8, 2026 are unaffected.
rtp_pass_codecs_on_stream_change:
type: boolean
description: Defines if codecs should be passed on stream change.
adjust_dtmf_timestamp:
type: boolean
description: Indicates whether DTMF timestamp adjustment is enabled.
ignore_dtmf_duration:
type: boolean
description: Indicates whether DTMF duration should be ignored.
ignore_mark_bit:
type: boolean
description: Indicates whether the mark bit should be ignored.
call_cost_enabled:
type: boolean
description: Indicates whether call cost calculation is enabled.
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
send_normalized_timestamps:
type: boolean
description: Indicates whether normalized timestamps should be sent.
third_party_control_enabled:
type: boolean
description: Indicates whether third-party control is enabled.
txt_name:
type: string
description: The name for the TXT record associated with the FQDN connection.
txt_value:
type: string
description: The value for the TXT record associated with the FQDN connection.
txt_ttl:
type: integer
description: The time to live for the TXT record associated with the FQDN connection.
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
webhook_event_url:
$ref: '#/components/schemas/WebhookEventUrl'
webhook_event_failover_url:
$ref: '#/components/schemas/WebhookEventFailoverUrl'
webhook_api_version:
$ref: '#/components/schemas/WebhookApiVersion'
webhook_timeout_secs:
$ref: '#/components/schemas/WebhookTimeoutSecs'
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
created_at:
$ref: '#/components/schemas/CreatedAt'
updated_at:
$ref: '#/components/schemas/UpdatedAt'
inbound:
$ref: '#/components/schemas/InboundFqdn'
outbound:
$ref: '#/components/schemas/OutboundFqdn'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
id: '1293384261075731499'
record_type: fqdn_connection
active: true
anchorsite_override: Latency
connection_name: string
transport_protocol: TLS
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: string
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 10
shaken_stir_enabled: true
outbound:
ani_override: string
ani_override_type: always
call_parking_enabled: true
channel_limit: 10
generate_ringback_tone: true
instant_ringback_enabled: true
ip_authentication_method: credential-authentication
ip_authentication_token: string
localization: string
outbound_voice_profile_id: '1293384261075731499'
t38_reinvite_source: customer
tech_prefix: string
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
FqdnConnectionTransportProtocol:
type: string
description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.
default: UDP
enum:
- UDP
- TCP
- TLS
From:
description: The phone number, in E.164 format, the fax will be sent from.
type: string
example: '+13125790015'
FuncInvocationLog:
type: object
properties:
record_type:
type: string
const: compute_func_invocation_log
timestamp:
type: string
format: date-time
method:
type: string
path:
type: string
status_code:
type: integer
duration_ms:
type: number
request_size_bytes:
type: integer
response_size_bytes:
type: integer
region:
type: string
FuncInvocationLogsResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/LogsMeta'
data:
type: array
items:
$ref: '#/components/schemas/FuncInvocationLog'
FuncLogExportConfig:
type: object
description: Metadata-only view of a function's log export destination. Header values are write-only (encrypted server-side)
and never appear in any response.
properties:
record_type:
type: string
enum:
- compute_func_log_export_config
id:
type: string
description: Configuration record ID
func_id:
type: string
description: Function ID this configuration belongs to
endpoint:
type: string
format: uri
description: HTTPS OTLP endpoint URL logs are pushed to
enabled:
type: boolean
description: Whether export is enabled for this function
runtime_export_enabled:
type: boolean
description: Whether runtime logs (function stdout/stderr) are exported
invocation_export_enabled:
type: boolean
description: Whether invocation records (one per HTTP request) are exported
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
FuncLogExportConfigResponse:
type: object
properties:
data:
$ref: '#/components/schemas/FuncLogExportConfig'
FuncLogExportConfigSetRequest:
type: object
description: 'Full-replace configuration body. All fields are required on every call: the API treats PUT as a replace
(RFC 7231), so omitting any field is a 422, not "keep the current value".'
required:
- endpoint
- headers
- runtime_export_enabled
- invocation_export_enabled
properties:
endpoint:
type: string
format: uri
description: HTTPS URL to push logs to
headers:
type: object
description: Headers attached to every export push, as key-value pairs (e.g. an auth token the collector expects).
Required even when empty — {} means "no headers". Encrypted at rest; never returned.
additionalProperties:
type: string
runtime_export_enabled:
type: boolean
description: Export runtime logs (function stdout/stderr) to this destination
invocation_export_enabled:
type: boolean
description: Export invocation records (one per HTTP request) to this destination
FuncRuntimeLog:
type: object
properties:
record_type:
type: string
const: compute_func_runtime_log
timestamp:
type: string
format: date-time
level:
type: string
message:
type: string
FuncRuntimeLogsResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/LogsMeta'
data:
type: array
items:
$ref: '#/components/schemas/FuncRuntimeLog'
FunctionDefinition:
properties:
name:
type: string
description:
type: string
parameters:
type: object
additionalProperties: true
type: object
required:
- name
title: FunctionDefinition
FunctionMetricAggregate:
type: object
properties:
record_type:
type: string
product:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
function_id:
type: string
function_name:
type: string
request_count:
type:
- number
- 'null'
request_success_rate:
type:
- number
- 'null'
request_client_error_rate:
type:
- number
- 'null'
request_error_rate:
type:
- number
- 'null'
request_latency_p50_ms:
type:
- number
- 'null'
request_latency_p95_ms:
type:
- number
- 'null'
request_latency_p99_ms:
type:
- number
- 'null'
request_latency_avg_ms:
type:
- number
- 'null'
cpu_used_cores_avg:
type:
- number
- 'null'
cpu_used_cores_max:
type:
- number
- 'null'
memory_used_bytes_avg:
type:
- number
- 'null'
memory_used_bytes_max:
type:
- number
- 'null'
FunctionMetricAggregateListResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/functions-observability_PaginationMeta'
data:
type: array
items:
$ref: '#/components/schemas/FunctionMetricAggregate'
FunctionTool:
properties:
type:
type: string
enum:
- function
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
function:
$ref: '#/components/schemas/FunctionDefinition'
type: object
required:
- type
- function
title: FunctionTool
GCSConfigurationData:
type: object
title: Google Cloud Storage Configuration Data
properties:
backend:
type: string
enum:
- gcs
description: Storage backend type
credentials:
$ref: '#/components/schemas/Credentials'
bucket:
$ref: '#/components/schemas/Bucket'
required:
- backend
GatewayError:
type: object
required:
- errors
properties:
errors:
type: array
items:
type: object
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
GatewayUsage:
type: object
additionalProperties: false
properties:
data:
type: object
additionalProperties: false
properties:
totals:
$ref: '#/components/schemas/UsageMetrics'
by_day:
type: array
items:
type: object
additionalProperties: false
properties:
requests:
type: integer
minimum: 0
input_tokens:
type: integer
minimum: 0
output_tokens:
type: integer
minimum: 0
unknown_requests:
type: integer
minimum: 0
cache_hits:
type: integer
minimum: 0
succeeded_requests:
type: integer
minimum: 0
failed_requests:
type: integer
minimum: 0
partial_requests:
type: integer
minimum: 0
spend:
$ref: '#/components/schemas/Money'
reserved_spend:
$ref: '#/components/schemas/Money'
date:
type: string
format: date
required:
- requests
- input_tokens
- output_tokens
- unknown_requests
- cache_hits
- succeeded_requests
- failed_requests
- partial_requests
- spend
- reserved_spend
- date
maxItems: 31
by_model:
type: array
items:
type: object
additionalProperties: false
properties:
requests:
type: integer
minimum: 0
input_tokens:
type: integer
minimum: 0
output_tokens:
type: integer
minimum: 0
unknown_requests:
type: integer
minimum: 0
cache_hits:
type: integer
minimum: 0
succeeded_requests:
type: integer
minimum: 0
failed_requests:
type: integer
minimum: 0
partial_requests:
type: integer
minimum: 0
spend:
$ref: '#/components/schemas/Money'
reserved_spend:
$ref: '#/components/schemas/Money'
model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
required:
- requests
- input_tokens
- output_tokens
- unknown_requests
- cache_hits
- succeeded_requests
- failed_requests
- partial_requests
- spend
- reserved_spend
- model
maxItems: 1000
guardrails:
type: object
additionalProperties: false
properties:
blocked_events:
type: integer
minimum: 0
flagged_events:
type: integer
minimum: 0
recent_events:
type: array
items:
$ref: '#/components/schemas/GuardrailEvent'
maxItems: 20
required:
- blocked_events
- flagged_events
- recent_events
required:
- totals
- by_day
- by_model
- guardrails
meta:
type: object
additionalProperties: false
properties:
token_group_id:
type: string
format: uuid
start_date:
type: string
format: date
end_date:
type: string
format: date
metadata:
type: object
description: The metadata[] filters applied to every section; {} when unfiltered.
maxProperties: 5
propertyNames:
pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$
additionalProperties:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
required:
- token_group_id
- start_date
- end_date
- metadata
required:
- data
- meta
GatherRequest:
type: object
title: Gather
properties:
minimum_digits:
description: The minimum number of digits to fetch. This parameter has a minimum value of 1.
default: 1
type: integer
example: 1
format: int32
maximum_digits:
description: The maximum number of digits to fetch. This parameter has a maximum value of 128.
default: 128
type: integer
example: 10
format: int32
timeout_millis:
description: The number of milliseconds to wait to complete the request.
default: 60000
type: integer
example: 60000
format: int32
inter_digit_timeout_millis:
description: The number of milliseconds to wait for input between digits.
default: 5000
type: integer
example: 10000
format: int32
initial_timeout_millis:
description: The number of milliseconds to wait for the first DTMF.
default: 5000
type: integer
example: 10000
format: int32
terminating_digit:
description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. Set to
an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input
per `valid_digits`.
default: '#'
type: string
example: '#'
valid_digits:
description: A list of all digits accepted as valid.
default: 0123456789#*
type: string
example: '123'
gather_id:
description: An id that will be sent back in the corresponding `call.gather.ended` webhook. Will be randomly generated
if not specified.
type: string
example: my_gather_id
minLength: 1
maxLength: 40
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
GatherUsingAIRequest:
type: object
title: Gather Using AI Request
required:
- parameters
properties:
parameters:
description: The parameters described as a JSON Schema object that needs to be gathered by the voice assistant.
See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the
format
type: object
example:
properties:
age:
description: The age of the customer.
type: integer
location:
description: The location of the customer.
type: string
required:
- age
- location
type: object
assistant:
$ref: '#/components/schemas/Assistant'
transcription:
$ref: '#/components/schemas/TranscriptionConfig'
language:
oneOf:
- $ref: '#/components/schemas/GoogleTranscriptionLanguage'
voice:
$ref: '#/components/schemas/VoiceConfig'
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
greeting:
description: Text that will be played when the gathering starts, if none then nothing will be played when the gathering
starts. The greeting can be text for any voice or SSML for `AWS.Polly.` voices. There is a 3,000 character
limit.
type: string
example: Hello, can you tell me your age and where you live?
send_partial_results:
description: Default is `false`. If set to `true`, the voice assistant will send partial results via the `call.ai_gather.partial_results`
callback in real time as individual fields are gathered. If set to `false`, the voice assistant will only send
the final result via the `call.ai_gather.ended` callback.
type: boolean
example: false
send_message_history_updates:
description: Default is `false`. If set to `true`, the voice assistant will send updates to the message history
via the `call.ai_gather.message_history_updated` callback in real time as the message history is updated.
type: boolean
example: false
message_history:
description: The message history you want the voice assistant to be aware of, this can be useful to keep the context
of the conversation, or to pass additional information to the voice assistant.
type: array
items:
type: object
properties:
content:
type: string
example: Hello, I'm 29 and I live in Paris.
description: The content of the message
role:
type: string
enum:
- assistant
- user
example: user
description: The role of the message sender
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
interruption_settings:
$ref: '#/components/schemas/InterruptionSettings'
user_response_timeout_ms:
description: The maximum time in milliseconds to wait for user response before timing out.
type: integer
default: 10000
example: 15000
gather_ended_speech:
description: Text that will be played when the gathering has finished. There is a 3,000 character limit.
type: string
maxLength: 3000
example: Thank you for providing the information.
example:
parameters:
properties:
age:
description: The age of the customer.
type: integer
location:
description: The location of the customer.
type: string
required:
- age
- location
type: object
voice: Telnyx.KokoroTTS.af
greeting: Hello, can you tell me your age and where you live?
send_partial_results: true
send_message_history_updates: true
message_history:
- content: Hello, what's your name?
role: assistant
- content: Hello, I'm John.
role: user
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
user_response_timeout_ms: 5000
GatherUsingAudioRequest:
type: object
title: Gather Using Audio Request
properties:
audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played back at the beginning of each prompt. The URL can point to either a
WAV or MP3 file. media_name and audio_url cannot be used together in one request.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played back at the beginning of each prompt. The media_name must point
to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be
a WAV or MP3 file.
invalid_audio_url:
type: string
description: The URL of a file to play when digits don't match the `valid_digits` parameter or the number of digits
is not between `min` and `max`. The URL can point to either a WAV or MP3 file. invalid_media_name and invalid_audio_url
cannot be used together in one request.
example: http://example.com/invalid.wav
invalid_media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played back when digits don't match the `valid_digits` parameter or
the number of digits is not between `min` and `max`. The media_name must point to a file previously uploaded to
api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.
minimum_digits:
description: The minimum number of digits to fetch. This parameter has a minimum value of 1.
default: 1
type: integer
example: 1
format: int32
maximum_digits:
description: The maximum number of digits to fetch. This parameter has a maximum value of 128.
default: 128
type: integer
example: 10
format: int32
maximum_tries:
description: The maximum number of times the file should be played if there is no input from the user on the call.
default: 3
type: integer
example: 3
format: int32
timeout_millis:
description: The number of milliseconds to wait for a DTMF response after file playback ends before a replaying
the sound file.
default: 60000
type: integer
example: 60000
format: int32
terminating_digit:
description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. Set to
an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input
per `valid_digits`.
default: '#'
type: string
example: '#'
valid_digits:
description: A list of all digits accepted as valid.
default: 0123456789#*
type: string
example: '123'
inter_digit_timeout_millis:
description: The number of milliseconds to wait for input between digits.
default: 5000
type: integer
example: 10000
format: int32
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
audio_url: http://example.com/message.wav
invalid_audio_url: http://example.com/message.wav
minimum_digits: 1
maximum_digits: 10
timeout_millis: 10000
terminating_digit: '#'
valid_digits: '123'
inter_digit_timeout_millis: 10000
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
GatherUsingSpeakRequest:
type: object
title: Gather Using Speak Request
required:
- voice
- payload
properties:
payload:
description: The text or SSML to be converted into speech. There is a 3,000 character limit.
type: string
example: Say this on the call
invalid_payload:
description: The text or SSML to be converted into speech when digits don't match the `valid_digits` parameter or
the number of digits is not between `min` and `max`. There is a 3,000 character limit.
type: string
example: Say this on the call
payload_type:
description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup
Language (SSML).
default: text
type: string
enum:
- text
- ssml
example: ssml
service_level:
description: This parameter impacts speech quality, language options and payload types. When using `basic`, only
the `en-US` language and payload type `text` are allowed.
default: premium
type: string
enum:
- basic
- premium
example: premium
voice:
description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`.\
\ Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n\
- **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic,\
\ human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available\
\ voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:**\
\ Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`).\
\ For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\
\ Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..`\
\ (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs,\
\ you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\"\
: \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)\
\ for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n- **Telnyx:** Use\
\ `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed\
\ and other synthesis parameters. `Bayan` provides Arabic (multiple dialects) and English voices (e.g., `Telnyx.Bayan.Ahmed`,\
\ `Telnyx.Bayan.Amanda`). `Sukhan` provides Urdu voices (e.g., `Telnyx.Sukhan.urdu-professor`); `voice_speed`\
\ is not supported.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`).\
\ Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings`\
\ to configure speed, volume, pitch, and language_boost.\n- **Resemble:** Use `Resemble.Turbo.` (e.g.,\
\ `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate,\
\ and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`,\
\ `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. Use `voice_settings` to configure `delivery_mode`\
\ (`STABLE`, `BALANCED`, `CREATIVE`), supported by `TTS2` only.\n- **Fish Audio:** Use `FishAudio..`\
\ (e.g., `FishAudio.s2.1-pro.`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish\
\ Voice-Library reference ID.\n- **Soniox:** Use `Soniox..` (e.g., `Soniox.tts-rt-v2.Emma`).\
\ Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices).\
\ Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for\
\ example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n\
- **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:**\
\ Use `Humain.` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`,\
\ `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.\n\n\
For service_level basic, you may define the gender of the speaker (male or female)."
type: string
example: Telnyx.KokoroTTS.af
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/MinimaxVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/InworldVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
minimax: '#/components/schemas/MinimaxVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
inworld: '#/components/schemas/InworldVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
language:
description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.
type: string
enum:
- arb
- cmn-CN
- cy-GB
- da-DK
- de-DE
- en-AU
- en-GB
- en-GB-WLS
- en-IN
- en-US
- es-ES
- es-MX
- es-US
- fr-CA
- fr-FR
- hi-IN
- is-IS
- it-IT
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pl-PL
- pt-BR
- pt-PT
- ro-RO
- ru-RU
- sv-SE
- tr-TR
example: en-US
minimum_digits:
description: The minimum number of digits to fetch. This parameter has a minimum value of 1.
default: 1
type: integer
example: 1
format: int32
maximum_digits:
description: The maximum number of digits to fetch. This parameter has a maximum value of 128.
default: 128
type: integer
example: 10
format: int32
maximum_tries:
description: The maximum number of times that a file should be played back if there is no input from the user on
the call.
default: 3
type: integer
example: 3
format: int32
timeout_millis:
description: The number of milliseconds to wait for a DTMF response after speak ends before a replaying the sound
file.
default: 60000
type: integer
example: 60000
format: int32
terminating_digit:
description: The digit used to terminate input if fewer than `maximum_digits` digits have been gathered. Set to
an empty string to disable the terminating digit entirely, so that a digit such as `#` can be collected as input
per `valid_digits`.
default: '#'
type: string
example: '#'
valid_digits:
description: A list of all digits accepted as valid.
default: 0123456789#*
type: string
example: '123'
inter_digit_timeout_millis:
description: The number of milliseconds to wait for input between digits.
default: 5000
type: integer
example: 10000
format: int32
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
payload: say this on call
invalid_payload: say this on call
payload_type: text
service_level: premium
voice: male
language: arb
minimum_digits: 1
maximum_digits: 10
terminating_digit: '#'
valid_digits: '123'
inter_digit_timeout_millis: 10000
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
GcbChannelZone:
title: Channel zone object
required:
- record_type
- countries
- id
- name
- channels
type: object
properties:
record_type:
type: string
enum:
- channel_zone
example: channel_zone
countries:
type: array
items:
type: string
description: List of countries (in ISO 3166-2, capitalized) members of the billing channel zone
example:
- BE
- EL
- LT
- PT
- BG
- ES
- LU
- RO
- CZ
- FR
- HU
- SI
- DK
- HR
- MT
- SK
- DE
- IT
- NL
- FI
- EE
- CY
- AT
- SE
- IE
- LV
- PL
id:
type: string
example: 1653e6a1-4bfd-4857-97c6-6a51e1c34477
name:
type: string
example: Euro channel zone
channels:
type: integer
format: int64
example: 7
created_at:
type: string
description: ISO 8601 formatted date of when the channel zone was created
example: '2019-01-23T18:10:02.574Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the channel zone was updated
example: '2019-01-23T18:10:02.574Z'
GenerateEvaluatorScenariosRequest:
type: object
properties:
num_scenarios:
type: integer
description: How many scenarios to generate.
agent_id:
type: integer
extra_instructions:
type: string
description: Optional guidance steering scenario generation.
tags:
type: array
items:
type: string
generate_expected_outcomes:
type: boolean
description: Whether to generate expected-outcome prompts for the scenarios.
first_message:
type: string
personalities:
type: array
items:
type: integer
test_profile:
type: integer
scenario_type:
type: string
enum:
- workflow
- red_teaming_voice
- red_teaming_text
description: Type of scenario to generate.
inbound_phone_number:
type:
- integer
- 'null'
tool_ids:
type: array
items:
type: string
folder_path:
type:
- string
- 'null'
required:
- num_scenarios
example:
num_scenarios: 5
agent_id: 1259
extra_instructions: Focus on angry customers asking about refunds.
scenario_type: workflow
generate_expected_outcomes: true
GenerateSpeechRequest:
type: object
description: Request body for generating speech from text.
properties:
voice:
type: string
description: 'Voice identifier in the format `provider.model_id.voice_id` or `provider.voice_id`. Examples: `Telnyx.Ultra.`,
`Telnyx.Bayan.Ahmed`, `Telnyx.Sukhan.urdu-professor`, `azure.en-US-AvaMultilingualNeural`, `aws.Polly.Generative.Lucia`.
When provided, `provider`, `model_id`, and `voice_id` are extracted automatically and take precedence over individual
parameters.'
text:
type: string
description: The text to convert to speech.
provider:
type: string
description: TTS provider. Required unless `voice` is provided.
enum:
- aws
- telnyx
- azure
- elevenlabs
- minimax
- resemble
- xai
- humain
- soniox
language:
type: string
description: Language code (e.g. `en-US`). Usage varies by provider.
text_type:
type: string
description: Text type. Use `ssml` for SSML-formatted input (supported by AWS and Azure).
enum:
- text
- ssml
output_type:
type: string
description: Determines the response format. `binary_output` returns raw audio bytes, `base64_output` returns base64-encoded
audio in JSON.
enum:
- binary_output
- base64_output
default: binary_output
disable_cache:
type: boolean
description: When `true`, bypass the audio cache and generate fresh audio.
default: false
voice_settings:
type: object
description: Provider-specific voice settings. Contents vary by provider — see provider-specific parameter objects
below.
additionalProperties: true
aws:
$ref: '#/components/schemas/AwsProviderParams'
telnyx:
$ref: '#/components/schemas/TelnyxProviderParams'
azure:
$ref: '#/components/schemas/AzureProviderParams'
elevenlabs:
$ref: '#/components/schemas/ElevenLabsProviderParams'
minimax:
$ref: '#/components/schemas/MinimaxProviderParams'
resemble:
$ref: '#/components/schemas/ResembleProviderParams'
xai:
$ref: '#/components/schemas/XAIProviderParams'
humain:
$ref: '#/components/schemas/HumainProviderParams'
soniox:
$ref: '#/components/schemas/SonioxProviderParams'
GenerateTestMetricsRequest:
type: object
properties:
agent_id:
type: integer
description: Test agent to suggest metrics for.
num_metrics:
type: integer
description: How many metrics to suggest.
scenarios:
type: array
items:
type: integer
description: Scenario IDs to base the suggestions on.
required:
- agent_id
- num_metrics
example:
agent_id: 1259
num_metrics: 5
scenarios:
- 9512
GenericError:
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
GenericErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/edge-compute_Error'
GenericPayConnectorConfig:
type: object
description: Configuration for a generic connector. A config update replaces the complete object, not individual keys.
Unknown config keys are discarded. Authentication credentials must be nonblank strings when required by the selected
auth_type.
required:
- endpoint_url
properties:
endpoint_url:
type: string
description: HTTP or HTTPS processor URL with a host. Use HTTPS to protect payment data in transit.
pattern: ^https?://\S+
example: https://processor.example.com/pay
auth_type:
type: string
description: Processor authentication, separate from the Telnyx API key. If omitted, validation requires basic credentials
but no Basic Authorization header is added. Explicitly set basic or bearer to send its corresponding Authorization
header, or none for no processor authentication.
enum:
- none
- basic
- bearer
username:
description: Nonblank string required for basic authentication. Returned in connector responses.
password:
description: Nonblank string required for basic authentication. Write-only; omitted from responses. Re-send when
replacing a basic-auth config.
writeOnly: true
token:
description: Nonblank string required for bearer authentication. Write-only; omitted from responses. Re-send when
replacing a bearer-auth config.
writeOnly: true
timeout:
type:
- integer
- 'null'
minimum: 1
maximum: 4294967295
default: 10000
description: Processor HTTP timeout in milliseconds. Omitted or null uses 10000; null is removed before storage.
Not the IVR digit-gather timeout.
oneOf:
- title: Basic authentication (also the validation default)
properties:
auth_type:
const: basic
username:
type: string
description: Basic username.
minLength: 1
pattern: \S
password:
type: string
description: Basic password.
minLength: 1
pattern: \S
required:
- username
- password
- title: Bearer authentication
properties:
auth_type:
const: bearer
token:
type: string
description: Processor bearer token.
minLength: 1
pattern: \S
required:
- auth_type
- token
- title: No processor authentication
properties:
auth_type:
const: none
required:
- auth_type
GetInsightTemplateGroupsRespData:
properties:
data:
items:
$ref: '#/components/schemas/InsightTemplateGroupResp'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: GetInsightTemplateGroupsRespData
GetInsightTemplatesRespData:
properties:
data:
items:
$ref: '#/components/schemas/InsightTemplateResp'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: GetInsightTemplatesRespData
GetSubRequestByPortingOrder:
type: object
properties:
sub_request_id:
type: string
description: Identifies the Sub Request associated with the Porting Order
example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe
port_request_id:
type: string
description: Identifies the Port Request associated with the Porting Order
example: 59b0762a-b274-4f76-ac32-4d5cf0272e66
GlobalIP:
allOf:
- $ref: '#/components/schemas/Record'
- type: object
title: Global IP
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: global_ip
ip_address:
type: string
description: The Global IP address.
readOnly: true
example: 198.51.100.1
ports:
type: object
description: A Global IP ports grouped by protocol code.
example:
tcp:
- 80
- 8080
udp:
- 5000
- 5050
additionalProperties: true
name:
type: string
description: A user specified name for the address.
example: test interface
description:
type: string
description: A user specified description for the address.
example: test interface
GlobalIPAllowedPort:
allOf:
- type: object
title: Global IP Allowed Port Range
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: global_ip_allowed_port
protocol_code:
type: string
description: The Global IP Protocol code.
readOnly: true
example: tcp
name:
type: string
description: A name for the Global IP ports range.
example: TCP Registered
first_port:
type: integer
description: First port of a range.
example: 1024
last_port:
type: integer
description: Last port of a range.
example: 49151
GlobalIPHealthCheck:
allOf:
- $ref: '#/components/schemas/Record'
- type: object
title: Global IP health check
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: global_ip_health_check
health_check_type:
type: string
description: The Global IP health check type.
example: http_status_2xx
health_check_params:
type: object
description: A Global IP health check params.
example:
path: /
port: 8080
additionalProperties: true
global_ip_id:
type: string
format: uuid
description: Global IP ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
GlobalIPProtocol:
allOf:
- type: object
title: Global IP Protocol
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: global_ip_protocol
code:
type: string
description: The Global IP Protocol code.
readOnly: true
example: tcp
name:
type: string
description: A name for Global IP Protocol.
example: TCP
GlobalIpAssignment:
allOf:
- $ref: '#/components/schemas/Record'
- type: object
title: Global IP
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: global_ip_assignment
global_ip_id:
type: string
format: uuid
description: Global IP ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
wireguard_peer_id:
type: string
format: uuid
description: Wireguard peer ID.
example: e66c496d-4a85-423b-8b2a-8e63fac20320
status:
$ref: '#/components/schemas/InterfaceStatus'
is_connected:
type: boolean
readOnly: true
description: Wireguard peer is connected.
is_in_maintenance:
type: boolean
description: Enable/disable BGP announcement.
is_announced:
type: boolean
readOnly: true
description: Status of BGP announcement.
GlobalIpAssignmentHealthMetric:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp of the metric.
example: '2020-01-01T00:00:00.000Z'
global_ip:
type: object
properties:
id:
type: string
format: uuid
description: Global IP ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
ip_address:
type: string
description: The Global IP address.
readOnly: true
example: 192.0.2.1
global_ip_assignment:
type: object
properties:
id:
type: string
format: uuid
description: Global IP assignment ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
wireguard_peer_id:
type: string
format: uuid
description: Wireguard peer ID.
example: e66c496d-4a85-423b-8b2a-8e63fac20320
wireguard_peer:
type: object
properties:
name:
type: string
description: A user specified name for the interface.
example: Wireguard Peer 1
ip_address:
type: string
description: The IP address of the interface.
example: 73.47.1.23
health:
type: object
properties:
pass:
type: number
description: The number of successful health checks.
example: 100
fail:
type: number
description: The number of failed health checks.
example: 0
GlobalIpAssignmentUpdate:
allOf:
- $ref: '#/components/schemas/GlobalIpAssignment'
- type: object
title: Global IP
properties:
global_ip_id:
readOnly: true
type: string
wireguard_peer_id:
readOnly: true
type: string
GlobalIpAssignmentUsageMetric:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp of the metric.
example: '2020-01-01T00:00:00.000Z'
global_ip:
type: object
properties:
id:
type: string
format: uuid
description: Global IP ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
ip_address:
type: string
description: The Global IP address.
readOnly: true
example: 64.1.4.130
global_ip_assignment:
type: object
properties:
id:
type: string
format: uuid
description: Global IP assignment ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
wireguard_peer_id:
type: string
format: uuid
description: Wireguard peer ID.
example: e66c496d-4a85-423b-8b2a-8e63fac20320
wireguard_peer:
type: object
properties:
name:
type: string
description: A user specified name for the interface.
example: Wireguard Peer 1
ip_address:
type: string
description: The IP address of the interface.
example: 172.1.0.1
transmitted:
type: object
properties:
amount:
type: number
description: The amount of data transmitted.
example: 100000
unit:
type: string
description: The unit of the amount of data transmitted.
example: B
received:
type: object
properties:
amount:
type: number
description: The amount of data received.
example: 100000
unit:
type: string
description: The unit of the amount of data received.
example: B
GlobalIpHealthCheckType:
allOf:
- type: object
title: Global IP Health Check Type
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: global_ip_health_check_type
health_check_type:
type: string
description: Global IP Health check type.
example: http_status_2xx
health_check_params:
type: object
description: Global IP Health check params.
example:
health_check_params:
path: str
port: int
additionalProperties: true
GlobalIpLatencyMetric:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp of the metric.
example: '2020-01-01T00:00:00.000Z'
global_ip:
type: object
properties:
id:
type: string
format: uuid
description: Global IP ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
ip_address:
type: string
description: The Global IP address.
readOnly: true
example: 192.0.2.1
prober_location:
type: object
properties:
id:
type: string
format: uuid
description: Location ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
name:
type: string
description: Location name.
example: Amsterdam
lat:
type: number
description: Latitude.
example: 52.370216
lon:
type: number
description: Longitude.
example: 4.895168
mean_latency:
type: object
properties:
amount:
type: number
description: The average latency.
example: 100
unit:
type: string
description: The unit of the average latency.
example: ms
percentile_latency:
type: object
properties:
'0':
type: object
properties:
amount:
type: number
description: The minimum latency.
example: 100
unit:
type: string
description: The unit of the minimum latency.
example: ms
'25':
type: object
properties:
amount:
type: number
description: The 25th percentile latency.
example: 100
unit:
type: string
description: The unit of the 25th percentile latency.
example: ms
'50':
type: object
properties:
amount:
type: number
description: The 50th percentile latency.
example: 100
unit:
type: string
description: The unit of the 50th percentile latency.
example: ms
'75':
type: object
properties:
amount:
type: number
description: The 75th percentile latency.
example: 100
unit:
type: string
description: The unit of the 75th percentile latency.
example: ms
'90':
type: object
properties:
amount:
type: number
description: The 90th percentile latency.
example: 100
unit:
type: string
description: The unit of the 90th percentile latency.
example: ms
'99':
type: object
properties:
amount:
type: number
description: The 99th percentile latency.
example: 100
unit:
type: string
description: The unit of the 99th percentile latency.
example: ms
'100':
type: object
properties:
amount:
type: number
description: The maximum latency.
example: 100
unit:
type: string
description: The unit of the maximum latency.
example: ms
GlobalIpUsageMetric:
type: object
properties:
timestamp:
type: string
format: date-time
description: The timestamp of the metric.
example: '2020-01-01T00:00:00.000Z'
global_ip:
type: object
properties:
id:
type: string
format: uuid
description: Global IP ID.
example: a836125b-20b6-452e-9c03-2653f09c7ed7
ip_address:
type: string
description: The Global IP address.
readOnly: true
example: 64.1.2.130
transmitted:
type: object
properties:
amount:
type: number
description: The amount of data transmitted.
example: 100000
unit:
type: string
description: The unit of the amount of data transmitted.
example: B
received:
type: object
properties:
amount:
type: number
description: The amount of data received.
example: 100000
unit:
type: string
description: The unit of the amount of data received.
example: B
GoogleTranscriptionLanguage:
title: Google transcription engine list of languages
type: string
description: Language to use for speech recognition
example: en
default: en
enum:
- af
- sq
- am
- ar
- hy
- az
- eu
- bn
- bs
- bg
- my
- ca
- yue
- zh
- hr
- cs
- da
- nl
- en
- et
- fil
- fi
- fr
- gl
- ka
- de
- el
- gu
- iw
- hi
- hu
- is
- id
- it
- ja
- jv
- kn
- kk
- km
- ko
- lo
- lv
- lt
- mk
- ms
- ml
- mr
- mn
- ne
- 'no'
- fa
- pl
- pt
- pa
- ro
- ru
- rw
- sr
- si
- sk
- sl
- ss
- st
- es
- su
- sw
- sv
- ta
- te
- th
- tn
- tr
- ts
- uk
- ur
- uz
- ve
- vi
- xh
- zu
GroupListMeta:
type: object
required:
- page_number
- page_size
- total_pages
- total_results
description: Group list `meta` (consistent with `GET /v2/email_blocks`).
properties:
page_number:
type: integer
page_size:
type: integer
total_pages:
type: integer
total_results:
type: integer
GroupSuppressionListResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/EmailBlock'
meta:
$ref: '#/components/schemas/GroupListMeta'
GuardrailEvent:
type: object
additionalProperties: false
properties:
record_type:
const: guardrail_event
id:
type: string
format: uuid
request_id:
type: string
format: uuid
created_at:
type: string
format: date-time
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
token_key_id:
type: string
format: uuid
end_user_id:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
stage:
type: string
enum:
- prompt
- response
outcome:
type: string
enum:
- evaluated
- flagged
- blocked
- unevaluated
findings:
type: array
items:
$ref: '#/components/schemas/GuardrailFinding'
evaluation_input_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
evaluation_output_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
metadata:
$ref: '#/components/schemas/RequestMetadata'
required:
- record_type
- id
- request_id
- created_at
- token_group_id
- token_user_id
- token_key_id
- end_user_id
- model
- stage
- outcome
- findings
- evaluation_input_tokens
- evaluation_output_tokens
- metadata
GuardrailFinding:
type: object
additionalProperties: false
properties:
detector:
type: string
enum:
- secrets
- dlp
- safety
code:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
count:
type: integer
minimum: 0
action:
type: string
enum:
- flag
- block
required:
- detector
- code
- count
- action
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
example:
detail:
- loc:
- body
- name
msg: Field required
type: missing
HandoffTool:
description: The handoff tool allows the assistant to hand off control of the conversation to another AI assistant.
By default, this will happen transparently to the end user.
properties:
type:
type: string
enum:
- handoff
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
handoff:
$ref: '#/components/schemas/HandoffToolParams'
type: object
required:
- type
- handoff
title: HandoffTool
HandoffToolParams:
properties:
voice_mode:
type: string
enum:
- unified
- distinct
description: With the unified voice mode all assistants share the same voice, making the handoff transparent to
the user. With the distinct voice mode all assistants retain their voice configuration, providing the experience
of a conference call with a team of assistants.
ai_assistants:
type: array
description: List of possible assistants that can receive a handoff.
items:
type: object
properties:
name:
type: string
description: Helpful name for giving context on when to handoff to the assistant.
example: Scheduling Specialist
id:
type: string
description: The ID of the assistant to hand off to.
example: assistant-1234567890abcdef
required:
- name
- id
required:
- ai_assistants
type: object
title: HandoffToolParams
HangupRequest:
type: object
title: Hangup Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
custom_headers:
description: Custom headers to be added to the SIP BYE message.
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
reason:
description: 'Text for the SIP `Reason` header (RFC 3326) sent when cancelling an unanswered outbound leg. The SIP
CANCEL carries `Reason: SIP;cause=200;text=""`; phones such as Poly and Yealink use it to suppress the
missed-call entry for a call answered elsewhere. Has no effect on an answered leg or an inbound leg. A hangup
sent before the leg''s `call.initiated` webhook still hangs up the leg, but without the `Reason` header. Must
not contain `"`, `\`, control characters, or characters outside the Basic Multilingual Plane (such as emoji);
invalid values are rejected with a 422.'
type: string
maxLength: 128
example: Call completed elsewhere
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
HangupTool:
properties:
type:
type: string
enum:
- hangup
hangup:
$ref: '#/components/schemas/HangupToolParams'
type: object
required:
- type
- hangup
title: HangupTool
HangupToolParams:
properties:
description:
type: string
default: This tool is used to hang up the call.
description: The description of the function that will be passed to the assistant.
type: object
title: HangupToolParams
HostedNumber:
example:
record_type: messaging_hosted_number
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
phone_number: '+18665550001'
status: successful
type: object
properties:
record_type:
type: string
example: messaging_hosted_number
id:
type: string
format: uuid
description: Identifies the type of resource.
readOnly: true
phone_number:
type: string
x-format: +E.164
description: The messaging hosted phone number (+E.164 format)
status:
type: string
enum:
- deleted
- failed
- failed_activation
- failed_carrier_rejected
- failed_ineligible_carrier
- failed_number_already_hosted
- failed_number_not_found
- failed_ownership_verification
- failed_timeout
- pending
- provisioning
- successful
HostedNumberOrder:
type: object
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Unique identifier for the event.
event_type:
type: string
example: messaging_hosted_numbers_orders.created
enum:
- messaging_hosted_numbers_orders.created
- messaging_hosted_numbers_orders.updated
- messaging_hosted_numbers_orders.deleted
- messaging_hosted_numbers_orders.internal_transfer_detected
- messaging_hosted_numbers_orders.internal_transfer_approval_requested
- messaging_hosted_numbers_orders.internal_transfer_approved
- messaging_hosted_numbers_orders.internal_transfer_rejected
- messaging_hosted_numbers_orders.internal_transfer_auto_approved
description: The type of event being delivered. Internal transfer events are only emitted for orders where the numbers
are already active on another Telnyx account.
occurred_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the event was generated.
payload:
$ref: '#/components/schemas/HostedNumberOrderEventPayload'
example:
record_type: event
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
event_type: messaging_hosted_numbers_orders.internal_transfer_approval_requested
occurred_at: '2026-04-20T18:10:02.574Z'
payload:
order_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
order_status: pending
profile_id: d0b1dabe-efdb-4bc8-9dd3-11f0d8b5f5b3
user_id: b448f9cc-a842-4784-98e9-03c1a5872950
numbers:
- value: '+13125550001'
status: pending
decision: pending
approval_deadline: 1714521600
HostedNumberOrderEvent:
type: object
properties:
data:
$ref: '#/components/schemas/HostedNumberOrder'
HostedNumberOrderEventPayload:
type: object
description: Payload delivered with every messaging_hosted_numbers_orders.* event. `approval_deadline` and `decision`
are meaningful only for `internal_transfer_*` events.
properties:
order_id:
type: string
format: uuid
description: The ID of the hosted number order.
order_status:
type: string
enum:
- pending
- provisioning
- successful
- failed
- deleted
- carrier_rejected
- compliance_review_failed
- incomplete_documentation
- incorrect_billing_information
- ineligible_carrier
- loa_file_invalid
- loa_file_successful
description: Current status of the order.
profile_id:
type: string
format: uuid
description: The messaging profile associated with the order.
user_id:
type: string
description: The organization that owns the order.
numbers:
type: array
items:
type: object
properties:
value:
type: string
x-format: +E.164
description: Phone number in +E.164 format.
status:
type: string
enum:
- deleted
- failed
- failed_activation
- failed_carrier_rejected
- failed_ineligible_carrier
- failed_number_already_hosted
- failed_number_not_found
- failed_ownership_verification
- failed_timeout
- ownership_successful
- pending
- provisioning
- successful
description: Current status of this phone number within the order.
decision:
type: string
enum:
- pending
- approved
- rejected
description: Approval decision for the internal transfer. Defaults to `pending` for non-internal-transfer events.
approval_deadline:
type:
- integer
- 'null'
format: int64
description: Unix timestamp (seconds) by which the losing organization must respond before auto-approval. Populated
on internal-transfer events once an approval window has been issued.
HttpUrl:
type: string
format: uri
minLength: 1
pattern: ^[Hh][Tt][Tt][Pp][Ss]?://
HumainProviderParams:
type: object
description: Humain provider-specific parameters. Unlike other providers, Humain has no format/sample-rate negotiation
(output is always PCM16 24kHz mono) and no language parameter — language is fixed per voice.
required:
- voice_id
properties:
voice_id:
type: string
description: Humain voice identifier.
enum:
- sara-en
- abdulaziz-en
- sara-ar
- abdulaziz-ar
- nourah-ar
- abdullah-ar
ttfb_eagerness:
type: number
format: float
description: Time-to-first-byte eagerness, trading synthesis latency for quality.
minimum: 0.0
maximum: 1.0
Id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
ImportAssistantsRequest:
properties:
provider:
type: string
enum:
- elevenlabs
- vapi
- retell
description: The external provider to import assistants from.
api_key_ref:
type: string
description: Integration secret pointer that refers to the API key for the external provider. This should be an
identifier for an integration secret created via /v2/integration_secrets.
import_ids:
type: array
items:
type: string
description: Optional list of assistant IDs to import from the external provider. If not provided, all assistants
will be imported.
type: object
required:
- provider
- api_key_ref
title: ImportAssistantsRequest
ImportExternalVetting:
title: ImportExternalVetting
required:
- evpId
- vettingId
type: object
properties:
evpId:
title: Evpid
maxLength: 10
type: string
description: External vetting provider ID for the brand.
vettingId:
title: Vettingid
type: string
description: Unique ID that identifies a vetting transaction performed by a vetting provider. This ID is provided
by the vetting provider at time of vetting.
vettingToken:
title: Vettingtoken
type: string
description: Required by some providers for vetting record confirmation.
ImportMetadata:
properties:
import_provider:
type: string
enum:
- elevenlabs
- vapi
- retell
description: Provider the assistant was imported from.
import_id:
type: string
description: ID of the assistant in the provider's system.
type: object
ImproveScenariosProgress:
type: object
properties:
progress_id:
type: string
session_id:
type:
- integer
- 'null'
mode:
type: string
status:
type: string
result:
type:
- object
- 'null'
properties:
success:
type: boolean
session_id:
type: integer
message:
type: string
cancelled:
type: boolean
needs_clarification:
type: boolean
clarification_questions:
type: array
items:
type: object
properties:
question:
type: string
conversation_history:
type: array
items:
type: object
properties:
role:
type: string
content:
type: string
timestamp:
type: string
updated_scenarios:
type: array
items:
type: object
additionalProperties: true
error:
type:
- string
- 'null'
example:
progress_id: c8f5d2b3-4e5f-6a7b-9c0d-1f2a3b4c5d6e
session_id: 417
mode: improve
status: completed
result:
success: true
message: Applied changes to 2 scenarios.
error: null
ImproveScenariosRequest:
type: object
properties:
user_message:
type: string
description: What the assistant should improve about the selected scenarios.
scenarios:
type:
- array
- string
items: {}
description: Scenario IDs to improve, or the literal string 'all'.
agent_id:
type:
- integer
- 'null'
session_id:
type:
- integer
- 'null'
context:
type:
- array
- 'null'
items:
type: object
properties:
role:
type: string
content:
type: string
timestamp:
type: string
apply_changes:
type: boolean
updated_scenarios:
type: array
items:
type: object
additionalProperties: true
num_scenarios:
type: integer
knowledge_base:
type: array
items:
type: integer
agent_resolution_response:
type: string
scenarios_needing_agent:
type: array
items:
type: integer
pending_tool_calls:
type:
- array
- 'null'
items:
type: object
additionalProperties: true
required:
- user_message
- scenarios
example:
user_message: Make the callers ask about damaged packaging too.
scenarios: all
agent_id: 1259
apply_changes: true
ImproveScenariosResponse:
type: object
properties:
progress_id:
type: string
session_id:
type:
- integer
- 'null'
required:
- progress_id
example:
progress_id: c8f5d2b3-4e5f-6a7b-9c0d-1f2a3b4c5d6e
session_id: 417
InboundConfig:
type: object
required:
- enabled
- catch_all
- mx_required
properties:
enabled:
type: boolean
catch_all:
type: boolean
mx_required:
type: boolean
InboundEmailAddress:
type: object
properties:
email:
type: string
format: email
name:
type: string
required:
- email
InboundFqdn:
type: object
title: Inbound FQDN
properties:
ani_number_format:
type: string
enum:
- +E.164
- E.164
- +E.164-national
- E.164-national
default: E.164-national
description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound
phone calls.
dnis_number_format:
type: string
enum:
- +e164
- e164
- national
- sip_username
default: e164
codecs:
type: array
items:
type: string
description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal
account, in priority order. This only works when the Connection the number is assigned to uses Media Handling
mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.'
default:
- G722
- G711U
- G711A
- G729
- OPUS
- H.264
default_routing_method:
type:
- string
- 'null'
enum:
- sequential
- round-robin
- null
default: sequential
description: Default routing method to be used when a number is associated with the connection. Must be one of the
routing method types or null, other values are not allowed.
default_primary_fqdn_id:
type:
- string
- 'null'
x-format: int64
default: null
description: 'The default primary FQDN to use for the number. Only settable if the connection is
of FQDN type. Value must be the ID of an FQDN set on the connection.'
default_secondary_fqdn_id:
type:
- string
- 'null'
x-format: int64
default: null
description: 'The default secondary FQDN to use for the number. Only settable if the connection is
of FQDN type. Value must be the ID of an FQDN set on the connection.'
default_tertiary_fqdn_id:
type:
- string
- 'null'
x-format: int64
default: null
description: 'The default tertiary FQDN to use for the number. Only settable if the connection is
of FQDN type. Value must be the ID of an FQDN set on the connection.'
channel_limit:
type:
- integer
- 'null'
default: null
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
isup_headers_enabled:
type: boolean
default: false
description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and
only when using TCP or TLS transport.)
prack_enabled:
type: boolean
description: Enable PRACK messages as defined in RFC3262.
default: false
sip_compact_headers_enabled:
type: boolean
description: Defaults to true.
default: true
sip_region:
type: string
default: US
description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be
used.
enum:
- US
- Europe
- Australia
sip_subdomain:
type:
- string
- 'null'
default: null
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a
phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from
any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
minimum: 1
maximum: 600
default: 90
shaken_stir_enabled:
type: boolean
description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE
message of inbound calls, even when using UDP transport.
default: false
example:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
default_primary_fqdn_id: '1293384261075731497'
default_secondary_fqdn_id: '1293384261075731498'
default_tertiary_fqdn_id: '1293384261075731499'
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: test
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
InboundIp:
type: object
title: Inbound Ip
example:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_primary_ip_id: 192.168.0.0
default_tertiary_ip_id: 192.168.0.0
default_secondary_ip_id: 192.168.0.0
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: test
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
properties:
ani_number_format:
type: string
enum:
- +E.164
- E.164
- +E.164-national
- E.164-national
default: E.164-national
description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound
phone calls.
dnis_number_format:
type: string
enum:
- +e164
- e164
- national
- sip_username
default: e164
codecs:
type: array
items:
type: string
description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal
account, in priority order. This only works when the Connection the number is assigned to uses Media Handling
mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.'
default:
- G722
- G711U
- G711A
- G729
- OPUS
- H.264
default_primary_ip_id:
type: string
description: "The default primary IP to use for the number. Only settable if the connection is\n of\
\ IP authentication type. Value must be the ID of an authorized IP set on the connection."
example: 192.168.0.0
default_secondary_ip_id:
type: string
description: "The default secondary IP to use for the number. Only settable if the connection is\n \
\ of IP authentication type. Value must be the ID of an authorized IP set on the connection."
example: 192.168.0.0
default_tertiary_ip_id:
type: string
description: "The default tertiary IP to use for the number. Only settable if the connection is\n of\
\ IP authentication type. Value must be the ID of an authorized IP set on the connection."
example: 192.168.0.0
default_routing_method:
type: string
enum:
- sequential
- round-robin
description: Default routing method to be used when a number is associated with the connection. Must be one of the
routing method types or left blank, other values are not allowed.
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
example: 10
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
isup_headers_enabled:
type: boolean
default: false
description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and
only when using TCP or TLS transport.)
prack_enabled:
type: boolean
description: Enable PRACK messages as defined in RFC3262.
default: false
sip_compact_headers_enabled:
type: boolean
description: Defaults to true.
default: true
sip_region:
type: string
default: US
description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be
used.
enum:
- US
- Europe
- Australia
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way a
phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called from
any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
default: 90
shaken_stir_enabled:
type: boolean
description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE
message of inbound calls, even when using UDP transport.
default: false
InboundMessage:
allOf:
- $ref: '#/components/schemas/ThreadMessage'
- type: object
properties:
direction:
type: string
enum:
- inbound
status:
type: string
enum:
- received
InboundMessageEvent:
type: object
properties:
data:
$ref: '#/components/schemas/messaging_InboundMessage'
InboundMessageListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/InboundMessage'
meta:
$ref: '#/components/schemas/email_PaginationMeta'
required:
- data
- meta
InboundMessagePayload:
properties:
record_type:
type: string
example: message
enum:
- message
description: Identifies the type of the resource.
direction:
type: string
example: inbound
enum:
- inbound
description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from
you.
id:
type: string
format: uuid
description: Identifies the type of resource.
type:
type: string
enum:
- SMS
- MMS
description: The type of message. This value can be either 'sms' or 'mms'.
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
organization_id:
type: string
description: Unique identifier for a messaging profile.
to:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
enum:
- queued
- sending
- sent
- delivered
- sending_failed
- delivery_failed
- delivery_unconfirmed
- webhook_delivered
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
cc:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
enum:
- queued
- sending
- sent
- delivered
- sending_failed
- delivery_failed
- delivery_unconfirmed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
status:
type: string
enum:
- received
- delivered
carrier:
type: string
description: The carrier of the sender.
line_type:
type: string
description: The line-type of the sender.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
num_chars:
type: integer
description: The number of characters in the message text
subject:
type:
- string
- 'null'
description: Message subject.
media:
type: array
items:
type: object
properties:
url:
type: string
format: url
description: The url of the media requested to be sent.
content_type:
type: string
description: The MIME type of the requested media.
x-format: mime-type
size:
type: integer
description: The size of the requested media.
hash_sha256:
type: string
minLength: 32
maxLength: 32
description: The SHA256 hash of the requested media.
webhook_url:
type:
- string
- 'null'
format: url
description: The URL where webhooks related to this message will be sent.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
encoding:
type: string
description: Encoding scheme used for the message body.
parts:
type: integer
minimum: 1
maximum: 10
description: Number of parts into which the message's body must be split.
tags:
type: array
description: Tags associated with the resource.
items:
type: string
cost:
type:
- object
- 'null'
properties:
amount:
type: string
description: The amount deducted from your account.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
cost_breakdown:
type:
- object
- 'null'
properties:
carrier_fee:
type: object
properties:
amount:
type: string
description: The carrier fee amount.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
rate:
type: object
properties:
amount:
type: string
description: The rate amount applied.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
description: Detailed breakdown of the message cost components.
tcr_campaign_id:
type:
- string
- 'null'
description: The Campaign Registry (TCR) campaign ID associated with the message.
tcr_campaign_billable:
type: boolean
description: Indicates whether the TCR campaign is billable.
tcr_campaign_registered:
type:
- string
- 'null'
description: The registration status of the TCR campaign.
example: REGISTERED
received_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
sent_at:
type:
- string
- 'null'
format: date-time
description: Not used for inbound messages.
completed_at:
type:
- string
- 'null'
format: date-time
description: Not used for inbound messages.
valid_until:
type:
- string
- 'null'
description: Not used for inbound messages.
format: date-time
errors:
type: array
description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
items:
$ref: '#/components/schemas/messaging_Error'
example:
record_type: message
direction: inbound
id: 7ee4241c-f127-47e5-9c34-3aac291f8058
type: SMS
messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18665550001'
status: delivered
carrier: T-MOBILE USA, INC.
line_type: Wireless
to:
- phone_number: '+18445550001'
status: delivered
carrier: TELNYX LLC
line_type: VoIP
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
InboundMessageResponse:
type: object
properties:
data:
$ref: '#/components/schemas/InboundMessage'
required:
- data
InboundSipHeader:
type: object
title: Inbound SIP Header
required:
- name
- value
properties:
name:
description: The name of the header received from the SIP INVITE.
type: string
enum:
- User-to-User
- Diversion
example: Diversion
value:
description: The value of the header.
type: string
example:
example:
name: Diversion
value:
InboundThread:
type: object
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_thread
inbox_id:
type: string
format: uuid
subject:
type: string
nullable: true
preview:
type: string
nullable: true
maxLength: 200
message_count:
type: integer
minimum: 1
description: Total inbound and outbound messages in the thread.
unread_count:
type: integer
minimum: 0
description: Unread inbound messages; outbound messages never increment this count.
last_message_id:
type: string
format: uuid
last_message_at:
type: string
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
labels:
type: array
description: Mutable thread labels used for agent workflow state. Independent of the labels on the thread's messages,
and distinct from the send-time `tags` on outbound messages.
items:
type: string
maxLength: 255
maxItems: 50
required:
- id
- record_type
- inbox_id
- subject
- preview
- message_count
- unread_count
- last_message_id
- last_message_at
- created_at
- updated_at
- labels
InboundThreadDetail:
allOf:
- $ref: '#/components/schemas/InboundThread'
- type: object
properties:
messages:
type: array
items:
$ref: '#/components/schemas/ThreadMessage'
required:
- messages
InboundThreadListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/InboundThread'
meta:
$ref: '#/components/schemas/email_PaginationMeta'
required:
- data
- meta
InboxActionEmailAddressInput:
description: Email address accepted by inbox message actions, as a string or an object with `email` and optional `name`.
oneOf:
- type: string
minLength: 3
pattern: ^[^\s@]+@[^\s@]+\.[^\s@]+$
- type: object
properties:
email:
type: string
minLength: 3
pattern: ^[^\s@]+@[^\s@]+\.[^\s@]+$
name:
type: string
required:
- email
InboxActionRecipientInput:
description: One recipient or a recipient array. Each recipient may be an email string or an object with `email` and
optional `name`.
oneOf:
- $ref: '#/components/schemas/InboxActionEmailAddressInput'
- type: array
items:
$ref: '#/components/schemas/InboxActionEmailAddressInput'
InboxFilterEntry:
type: string
description: 'An exact sender address (`user@example.com`) or domain wildcard
(`@example.com`). Values are trimmed and normalized to lowercase.
'
example: '@example.com'
InboxFilterEntryList:
type: array
maxItems: 500
items:
$ref: '#/components/schemas/InboxFilterEntry'
InboxFilters:
type: object
properties:
record_type:
type: string
enum:
- email_inbox_filters
allowlist:
$ref: '#/components/schemas/InboxFilterEntryList'
blocklist:
$ref: '#/components/schemas/InboxFilterEntryList'
required:
- record_type
- allowlist
- blocklist
InboxFiltersResponse:
type: object
properties:
data:
$ref: '#/components/schemas/InboxFilters'
required:
- data
InexplicitNumberOrderRequest:
type: object
properties:
ordering_groups:
type: array
description: Group(s) of numbers to order. You can have multiple ordering_groups objects added to a single request.
items:
type: object
properties:
country_iso:
type: string
description: 'Country where you would like to purchase phone numbers. Allowable values: US, CA'
enum:
- US
- CA
count_requested:
type: string
description: Quantity of phone numbers to order
phone_number_type:
type: string
description: Number type (local, toll-free, etc.)
national_destination_code:
type: string
description: Filter by area code
phone_number:
type: object
description: Phone number search criteria
properties:
starts_with:
type: string
description: Filter by the starting digits of the phone number
ends_with:
type: string
description: Filter by the ending digits of the phone number
contains:
type: string
description: Filter for phone numbers that contain the digits specified
administrative_area:
type: string
description: Filter for phone numbers in a given state / province
locality:
type: string
description: Filter for phone numbers in a given city / region / rate center
features:
type: array
description: Filter for phone numbers that have the features to satisfy your use case (e.g., ["voice"])
items:
type: string
strategy:
type: string
description: 'Ordering strategy. Define what action should be taken if we don''t have enough phone numbers
to fulfill your request. Allowable values are: always = proceed with ordering phone numbers, regardless
of current inventory levels; never = do not place any orders unless there are enough phone numbers to satisfy
the request. If not specified, the always strategy will be enforced.'
enum:
- always
- never
default: always
quickship:
type: boolean
description: Filter to exclude phone numbers that need additional time after to purchase to activate. Only
applicable for +1 toll_free numbers.
exclude_held_numbers:
type: boolean
description: Filter to exclude phone numbers that are currently on hold/reserved for your account.
required:
- country_iso
- count_requested
- phone_number_type
connection_id:
type: string
description: Connection id to apply to phone numbers that are purchased
messaging_profile_id:
type: string
description: Messaging profile id to apply to phone numbers that are purchased
customer_reference:
type: string
description: Reference label for the customer
billing_group_id:
type: string
description: Billing group id to apply to phone numbers that are purchased
required:
- ordering_groups
InexplicitNumberOrderResponse:
type: object
properties:
id:
type: string
description: Unique identifier for the inexplicit number order
connection_id:
type: string
description: Connection id to apply to phone numbers that are purchased
messaging_profile_id:
type: string
description: Messaging profile id to apply to phone numbers that are purchased
customer_reference:
type: string
description: Reference label for the customer
billing_group_id:
type: string
description: Billing group id to apply to phone numbers that are purchased
ordering_groups:
type: array
items:
type: object
properties:
country_iso:
type: string
description: Country where you would like to purchase phone numbers
phone_number_type:
type: string
description: Number type
count_requested:
type: integer
description: Quantity of phone numbers requested
count_allocated:
type: integer
description: Quantity of phone numbers allocated
status:
type: string
description: Status of the ordering group
enum:
- pending
- processing
- failed
- success
- partial_success
national_destination_code:
type: string
description: Filter by area code
phone_number[starts_with]:
type: string
description: Filter by the starting digits of the phone number
phone_number[ends_with]:
type: string
description: Filter by the ending digits of the phone number
phone_number[contains]:
type: string
description: Filter for phone numbers that contain the digits specified
administrative_area:
type: string
description: Filter for phone numbers in a given state / province
strategy:
type: string
description: Ordering strategy used
enum:
- always
- never
quickship:
type: boolean
description: Filter to exclude phone numbers that need additional time after to purchase to activate. Only
applicable for +1 toll_free numbers.
exclude_held_numbers:
type: boolean
description: Filter to exclude phone numbers that are currently on hold/reserved for your account.
error_reason:
type: string
description: Error reason if applicable
orders:
type: array
description: Array of orders created to fulfill the inexplicit order
items:
type: object
properties:
number_order_id:
type: string
format: uuid
description: ID of the main number order
sub_number_order_ids:
type: array
items:
type: string
format: uuid
description: Array of sub number order IDs
required:
- number_order_id
- sub_number_order_ids
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the ordering group was created
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the ordering group was updated
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated
InferenceEmbeddingTransferToolParams:
properties:
targets:
oneOf:
- type: array
items:
type: object
properties:
name:
type: string
description: The name of the target.
example: Support
to:
type: string
description: The destination number or SIP URI of the call.
example: '+13129457420'
message:
type: string
description: The warm transfer message to deliver to this specific target. When set, it takes precedence
over the message the assistant composes from `warm_transfer_instructions`.
example: I have a caller asking about a billing issue on invoice 4471.
extension:
type: string
description: 'DTMF digits to send automatically after the transfer destination answers. Useful for reaching
an extension behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed
characters: `0-9`, `A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted,
no automatic DTMF is sent.'
example: wwww200
sip_auth_username:
type: string
description: SIP Authentication username used for SIP challenges. Applies when `to` is a SIP URI.
example: sipuser
sip_auth_password:
type: string
description: SIP Authentication password used for SIP challenges. Applies when `to` is a SIP URI.
example: sippass
required:
- to
- type: string
description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables
webhook and resolves to an array of target objects at runtime.
example: '{{ targets }}'
description: The different possible targets of the transfer. The assistant will be able to choose one of the targets
to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned
by the dynamic variables webhook and resolves to an array of target objects at runtime.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
diversion:
type: string
example: '{{telnyx_agent_target}}'
description: 'The number the inbound call was received on, forwarded so an unverified non-Telnyx `from` can be used
as the caller id -- typically to transfer out as the original caller by pairing `from: "{{telnyx_end_user_target}}"`
with `diversion: "{{telnyx_agent_target}}"`. The caller id is only accepted while that number is still on an active
inbound call to this `diversion` number, and the `diversion` number must be one you own or have verified.'
warm_transfer_instructions:
type: string
example: Briefly greet the transfer recipient and provide any relevant information from the call. Let them know
you will bridge the call right after.
description: Natural language instructions for your agent for how to provide context for the transfer recipient.
warm_transfer_acceptance:
type: object
description: 'Requires the transfer destination to accept the call before the caller is bridged. When enabled, the
assistant speaks privately with the destination after they answer — delivering the warm transfer message and asking
whether they take the call — while the caller keeps hearing ringback. The assistant then finalizes the transfer
with the built-in `complete_transfer` tool: an accept bridges the calls, a decline hangs up the destination and
returns the assistant to the caller with the reason the destination gave. Requires either `warm_transfer_instructions`
or a `message` on every target, otherwise the assistant fails to save. Only available for calls started with `ai_assistant_start`;
single-caller conversations only (a conference or additional invited participants fall back to a regular warm
transfer).'
properties:
enabled:
type: boolean
default: false
description: Whether the destination must accept the transfer before the calls are bridged.
end_user_target_context_mode:
type: string
enum:
- private
- shared
default: private
description: Controls whether the private exchange between the assistant and the transfer destination is kept
out of the conversation. With `private` (default) the exchange never reaches the conversation history, AI
conversations, webhooks or insights, and the transfer tool result is rewritten with the outcome only. With
`shared` the exchange stays in the conversation like any other messages.
require_acceptance:
type: boolean
default: false
description: 'Fail closed when the acceptance consult cannot run. Off by default: if the consult cannot be set
up for any reason — including where acceptance is unavailable at all (`gather_using_ai`, Conversation Relay
or web calls, a conference, or additional invited participants) — the transfer degrades to a plain warm transfer
(the warm transfer message is played to the destination as audio and the calls are bridged anyway). Set to
true to treat those paths as a decline instead: the destination is disconnected without being asked, the assistant
returns to the caller, and no bridge happens without an acceptance. Only consult-setup failures are affected;
the destination must still explicitly accept on every consult that does run.'
timeout_secs:
type: integer
minimum: 10
maximum: 600
default: 60
description: How long, in seconds, the destination has to accept the transfer, counted from when the private
consult starts (right after the destination answers, or after `warm_message_delay_ms`). The caller keeps hearing
ringback the whole time. If no acceptance arrives in time, the destination is hung up and the assistant returns
to the caller (the transfer fails as a timeout). Raise it for destinations that answer before a human is on
the line, such as a call-center queue/ACD or an IVR playing hold audio; keep it as short as practical, since
the caller waits on ringback until it expires.
description:
type: string
description: A description of the transfer tool. By default, Telnyx generates this automatically based on the configured
targets. Typically only set when importing an assistant from another provider that allowed a custom description;
in that case the provided value is preserved. Most users should leave this empty and let Telnyx manage it.
example: Transfer the call to a human agent.
bridge_beep:
type: object
description: Plays a short beep once the transfer completes and the calls are bridged, so the transfer destination
knows the caller is now on the line. The warm transfer message plays before the bridge; this marks the moment
the caller actually joins. Works with and without `warm_transfer_acceptance`.
properties:
enabled:
type: boolean
default: false
description: Whether to play the beep when the calls are bridged.
target_legs:
type: string
enum:
- self
- both
default: self
description: Who hears the beep. `self` plays it to the transfer destination only; `both` plays it to the destination
and the original caller.
warm_message_delay_ms:
type:
- integer
- 'null'
example: 2000
description: Optional delay in milliseconds before playing the warm message audio when the transferred call is answered.
When set, the audio_url is not included in the dial command; instead, playback starts after the specified delay.
When not set, existing behavior (audio_url in dial) is preserved.
custom_headers:
description: Custom headers to be added to the SIP INVITE for the transfer command.
type: array
items:
type: object
properties:
name:
type: string
value:
description: The value of the header. Note that we support mustache templating for the value. For example
you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration
secret.
type: string
voicemail_detection:
type: object
description: Configuration for voicemail detection (AMD - Answering Machine Detection) on the transferred call.
Allows the assistant to detect when a voicemail system answers the transferred call and take appropriate action.
properties:
detection_mode:
type: string
enum:
- disabled
- premium
description: The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled'
turns off AMD detection.
on_voicemail_detected:
type: object
description: Action to take when voicemail is detected on the transferred call.
properties:
action:
type: string
enum:
- stop_transfer
- leave_message_and_stop_transfer
description: The action to take when voicemail is detected. 'stop_transfer' hangs up immediately. 'leave_message_and_stop_transfer'
leaves a message then hangs up.
voicemail_message:
type: object
description: Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_transfer'.
properties:
type:
type: string
enum:
- message
- warm_transfer_instructions
description: The type of voicemail message. Use 'message' to leave a specific TTS message, or 'warm_transfer_instructions'
to play the warm transfer audio.
message:
type: string
description: The specific message to leave as voicemail (converted to speech). Only applicable when
type is 'message'.
detection_config:
type: object
description: Advanced AMD detection configuration parameters. All values are optional - Telnyx will use defaults
if not specified.
properties:
greeting_silence_duration_millis:
type: integer
minimum: 500
maximum: 50000
description: Duration of silence after the greeting to wait before considering the greeting complete.
greeting_total_analysis_time_millis:
type: integer
minimum: 500
maximum: 300000
description: Maximum time to spend analyzing the greeting.
after_greeting_silence_millis:
type: integer
minimum: 100
maximum: 5000
description: Duration of silence after greeting detection before finalizing the result.
between_words_silence_millis:
type: integer
minimum: 10
maximum: 5000
description: Maximum silence duration between words during greeting.
greeting_duration_millis:
type: integer
minimum: 100
maximum: 10000
description: Expected duration of greeting speech.
initial_silence_millis:
type: integer
minimum: 100
maximum: 500000
description: Maximum silence duration at the start of the call before speech.
maximum_number_of_words:
type: integer
minimum: 1
maximum: 50
description: Maximum number of words expected in a human greeting.
maximum_word_length_millis:
type: integer
minimum: 50
maximum: 5000
description: Maximum duration of a single word.
silence_threshold:
type: integer
minimum: 1
maximum: 1000
description: Audio level threshold for silence detection.
total_analysis_time_millis:
type: integer
minimum: 500
maximum: 60000
description: Total time allowed for AMD analysis.
min_word_length_millis:
type: integer
minimum: 1
maximum: 1000
description: Minimum duration for audio to be considered a word.
type: object
required:
- targets
- from
title: TransferToolParams
InfringementClaim:
type: object
properties:
id:
type: string
format: uuid
example: e379fbc8-cd83-4bef-a280-a0ac9d00dcf8
readOnly: true
dir_id:
type: string
format: uuid
example: 42a3f554-7ce3-44c2-bfe9-6e1afe0d7991
enterprise_id:
type: string
format: uuid
example: 7eca8226-8081-4e11-abdc-437b5f53a81f
claim_type:
$ref: '#/components/schemas/InfringementClaimType'
claim_description:
type: string
minLength: 10
maxLength: 2000
example: Alleged infringement on trademark XYZ.
claimant_name:
type: string
minLength: 1
maxLength: 255
example: Test Claimant LLC
claimant_contact:
type: string
minLength: 1
maxLength: 255
example: legal@testclaimant.example.com
claim_date:
type: string
format: date-time
description: When the claim was filed (set by the claimant's representative at file time).
example: '2026-04-22T02:12:54Z'
readOnly: true
status:
$ref: '#/components/schemas/InfringementClaimStatus'
resolution:
type: string
nullable: true
enum:
- upheld
- rejected
- modified
description: Set only when `status` is `resolved`.
resolution_date:
type: string
format: date-time
nullable: true
readOnly: true
resolution_notes:
type: string
nullable: true
maxLength: 2000
readOnly: true
contest_documents:
type: array
items:
$ref: '#/components/schemas/Document'
description: Aggregated across all customer contest submissions on this claim.
contest_history:
type: array
items:
$ref: '#/components/schemas/ContestSubmission'
description: Per-round submission audit trail. Each entry records one `POST /infringement_claims/{id}/contest` call
(notes, timestamp, document count). Aggregated documents live on `contest_documents`.
readOnly: true
dir:
$ref: '#/components/schemas/InfringementClaimDirRef'
created_at:
type: string
format: date-time
example: '2026-04-22T02:12:55.908411Z'
readOnly: true
updated_at:
type: string
format: date-time
example: '2026-04-22T02:12:55.908417Z'
readOnly: true
InfringementClaimContest:
type: object
required:
- contest_notes
additionalProperties: false
properties:
contest_notes:
type: string
minLength: 10
maxLength: 2000
description: Customer's response to the claim. 10–2000 characters.
example: We own the trademark outright; our registration precedes the claimant by three years.
documents:
type: array
items:
$ref: '#/components/schemas/Document'
maxItems: 20
description: Up to 20 supporting documents per submission. `document_id` must be unique within this submission.
Documents are aggregated into the claim's `contest_documents` across all submissions.
InfringementClaimDirRef:
type: object
description: Snapshot of the DIR the claim is filed against, embedded for convenience.
properties:
id:
type: string
format: uuid
example: 42a3f554-7ce3-44c2-bfe9-6e1afe0d7991
readOnly: true
display_name:
type: string
example: Acme Plumbing
enterprise_id:
type: string
format: uuid
example: 7eca8226-8081-4e11-abdc-437b5f53a81f
status:
$ref: '#/components/schemas/DirStatus'
InfringementClaimList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/InfringementClaim'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
InfringementClaimStatus:
type: string
enum:
- pending
- contested
- resolved
description: Lifecycle status. `pending` - newly filed; the DIR is auto-suspended. `contested` - you have submitted
contest evidence; awaiting Telnyx review. `resolved` - final.
InfringementClaimType:
type: string
enum:
- trademark
- copyright
description: Category of infringement being claimed.
InfringementClaimWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/InfringementClaim'
IngestPayload:
title: Payload
description: 'The session''s messages, in whatever shape your framework produces. Any JSON value but null is accepted
and stored whole, as long as it holds something to remember: a body with no content anywhere in it -- `{}`, `[]`,
`""`, `{"messages": []}` -- is a 422.'
anyOf:
- type: object
additionalProperties: true
- type:
- array
- string
- number
- boolean
IngestResponse:
properties:
data:
$ref: '#/components/schemas/AcceptedIngest'
type: object
required:
- data
title: IngestResponse
InitiateAICallRequest:
type: object
title: Initiate AI Call Request
required:
- From
- To
- AIAssistantId
properties:
From:
description: The phone number of the party initiating the call. Phone numbers are formatted with a `+` and country
code.
example: '+16175551212'
type: string
To:
description: The phone number of the called party. Phone numbers are formatted with a `+` and country code.
example: '+16175551212'
type: string
AIAssistantId:
description: The ID of the AI assistant to use for the call. Telnyx attempts to warm up this assistant before the
call is placed and starts it automatically when the called party answers.
type: string
AIAssistantVersion:
description: The version of the AI assistant to use.
type: string
AIAssistantDynamicVariables:
description: Key-value map of dynamic variables to pass to the AI assistant.
type: object
additionalProperties:
type: string
example:
customer_name: John Doe
account_id: '12345'
CallerId:
description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number).
The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special
characters. If omitted, the display name will be the same as the number in the `From` field.
example: Info
type: string
StatusCallback:
description: URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call
value overrides the status callback URL configured on the TeXML application/connection.
example: https://www.example.com/callback
type: string
StatusCallbackEvent:
description: 'The status callback events for which Telnyx should send a webhook for this AI call. Multiple events
can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy,
canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured
on the TeXML application/connection.'
example: initiated answered
default: completed
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided,
this per-call value overrides the status callback method configured on the TeXML application/connection.
example: GET
default: POST
type: string
enum:
- GET
- POST
StatusCallbacks:
description: Array of URL destinations for Telnyx to send status callback events for this AI call. When provided,
these per-call values override the status callback URL configured on the TeXML application/connection.
type: array
items:
type: string
example:
- https://www.example.com/callback1
- https://www.example.com/callback2
CustomHeaders:
description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value'
properties.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom header
value:
type: string
description: The value of the custom header
required:
- name
- value
example:
- name: X-Custom-Header
value: custom-value
ConversationCallback:
description: URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created`
and `conversation_ended`.
example: https://www.example.com/conversation-callback
type: string
ConversationCallbackMethod:
description: HTTP request type used for `ConversationCallback` and `ConversationCallbacks`.
example: GET
default: POST
type: string
enum:
- GET
- POST
ConversationCallbacks:
description: Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created`
and `conversation_ended`.
type: array
items:
type: string
example:
- https://www.example.com/conversation-callback1
- https://www.example.com/conversation-callback2
MachineDetection:
description: Enables Answering Machine Detection.
example: Enable
default: Disable
type: string
enum:
- Enable
- Disable
- DetectMessageEnd
DetectionMode:
description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection
example: Premium
default: Regular
type: string
enum:
- Premium
- Regular
- PremiumCallScreening
AsyncAmd:
description: Select whether to perform answering machine detection in the background. By default execution is blocked
until Answering Machine Detection is completed.
example: true
default: false
type: boolean
AsyncAmdStatusCallback:
description: URL destination for Telnyx to send AMD callback events to for the call.
example: https://www.example.com/callback
type: string
AsyncAmdStatusCallbackMethod:
description: HTTP request type used for `AsyncAmdStatusCallback`.
example: GET
default: POST
type: string
enum:
- GET
- POST
MachineDetectionTimeout:
description: Maximum timeout threshold in milliseconds for overall detection.
example: 5000
default: 30000
maximum: 60000
minimum: 500
type: integer
MachineDetectionPromptEndTimeout:
description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds.
Used when `DetectionMode` is `PremiumCallScreening`.
example: 5000
minimum: 1000
maximum: 120000
type: integer
MachineDetectionSpeechThreshold:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored
when `premium` detection is used.
example: 2000
default: 3500
type: integer
MachineDetectionSpeechEndThreshold:
description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when
`premium` detection is used.
example: 2000
default: 800
type: integer
MachineDetectionSilenceTimeout:
description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium`
detection is used.
example: 2000
default: 3500
type: integer
MachineDetectionBeepProfile:
description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors
to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default
profile. Only used when MachineDetection is enabled.
example: freq_only
default: both
type: string
enum:
- both
- freq_only
MachineDetectionBeepMinFrequency:
description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes
North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile
is in use. Only used when MachineDetection is enabled.
type: integer
example: 550
format: int32
minimum: 200
maximum: 4000
MachineDetectionBeepMaxFrequency:
description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection
is enabled.
type: integer
example: 2000
format: int32
minimum: 200
maximum: 4000
MachineDetectionBeepMinToneDuration:
description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such
as call-progress blips. Only used when MachineDetection is enabled.
type: integer
example: 300
format: int32
minimum: 50
maximum: 5000
MachineDetectionBeepSpectralConfirmation:
description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used
when MachineDetection is enabled.
type: boolean
example: true
MachineDetectionBeepSpectralWindow:
description: Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled.
type: integer
example: 100
format: int32
minimum: 20
maximum: 1000
MachineDetectionBeepSpectralMinPurity:
description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed
tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled.
type: number
example: 0.8
minimum: 0
maximum: 1
MachineDetectionBeepSpectralRejectFaxCng:
description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection
is enabled.
type: boolean
example: true
Passports:
description: A string of passport identifiers to associate with the call.
type: string
TimeLimit:
description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400
(4 hours). Default is 14400 seconds.
example: 3600
type: integer
minimum: 30
maximum: 14400
default: 14400
Timeout:
description: The number of seconds to wait for the called party to answer the call before the call is canceled.
The minimum value is 5 and the maximum value is 120. Default is 30 seconds.
example: 60
type: integer
minimum: 5
maximum: 120
default: 30
x-stainless-param: timeout_seconds
Record:
description: Whether to record the entire participant's call leg. Defaults to `false`.
example: false
type: boolean
RecordingChannels:
description: The number of channels in the final recording. Defaults to `mono`.
example: dual
type: string
enum:
- mono
- dual
RecordingStatusCallback:
description: The URL the recording callbacks will be sent to.
example: https://example.com/recording_status_callback
type: string
RecordingStatusCallbackMethod:
description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecordingStatusCallback`. Can
be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTimeout:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. The minimum value is 0. The default value is 0 (infinite).
example: 5
type: integer
default: 0
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
Trim:
description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
SendRecordingUrl:
$ref: '#/components/schemas/SendRecordingUrl'
PreferredCodecs:
description: The list of comma-separated codecs to be offered on a call.
example: PCMA,PCMU
type: string
SipAuthUsername:
description: The username to use for SIP authentication.
example: user
type: string
SipAuthPassword:
description: The password to use for SIP authentication.
example: '1234'
type: string
SipRegion:
description: Defines the SIP region to be used for the call.
type: string
default: US
enum:
- US
- Europe
- Canada
- Australia
- Middle East
example: Canada
example:
From: '+13120001234'
To: '+13121230000'
AIAssistantId: ai-assistant-id-123
InitiateAICallResult:
type: object
title: Initiate AI Call Result
example:
from: '+13120001234'
to: '+13121230000'
status: queued
call_sid: v3:example-call-sid
properties:
from:
type: string
example: '+13120001234'
to:
type: string
example: '+13120000000'
status:
type: string
example: queued
call_sid:
type: string
example: v3:example-call-sid
InitiateCallRequest:
type: object
title: Initiate Call Request
required:
- To
- From
- ApplicationSid
properties:
ApplicationSid:
description: The ID of the TeXML Application that will handle the call, for example `1293384261075731499`. The `ApplicationSid`
name is kept for Twilio API compatibility, but the value is the numeric ID of one of your TeXML Applications (see
the TeXML Applications API or the Mission Control Portal), not a Twilio `AP...` SID. If `Url` and `Texml` are
omitted, Telnyx fetches instructions from the XML Request URL configured on this application.
type: string
example: '1293384261075731499'
To:
description: The phone number of the called party. Phone numbers are formatted with a `+` and country code.
example: '+16175551212'
type: string
From:
description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country
code.
example: '+16175551212'
type: string
CallerId:
description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number).
The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special
characters. If ommited, the display name will be the same as the number in the `From` field.
example: Info
type: string
Url:
description: The URL from which Telnyx will retrieve the TeXML call instructions.
example: https://www.example.com/instructions.xml
type: string
UrlMethod:
description: HTTP request type used for `Url`. The default value is inherited from TeXML Application setting.
example: GET
default: POST
type: string
enum:
- GET
- POST
FallbackUrl:
description: A failover URL for which Telnyx will retrieve the TeXML call instructions if the `Url` is not responding.
example: https://www.example.com/instructions-fallback.xml
type: string
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the call.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
default: POST
type: string
enum:
- GET
- POST
StatusCallbackEvent:
description: The call events for which Telnyx should send a webhook. Multiple events can be defined when separated
by a space.
example: initiated answered
default: completed
type: string
MachineDetection:
description: Enables Answering Machine Detection.
example: Enable
default: Disable
type: string
enum:
- Enable
- Disable
- DetectMessageEnd
DetectionMode:
description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection
example: Premium
default: Regular
type: string
enum:
- Premium
- Regular
- PremiumCallScreening
AsyncAmd:
description: Select whether to perform answering machine detection in the background. By default execution is blocked
until Answering Machine Detection is completed.
example: true
default: false
type: boolean
AsyncAmdStatusCallback:
description: URL destination for Telnyx to send AMD callback events to for the call.
example: https://www.example.com/callback
type: string
AsyncAmdStatusCallbackMethod:
description: HTTP request type used for `AsyncAmdStatusCallback`. The default value is inherited from TeXML Application
setting.
example: GET
default: POST
type: string
enum:
- GET
- POST
MachineDetectionTimeout:
description: Maximum timeout threshold in milliseconds for overall detection.
example: 5000
default: 30000
maximum: 60000
minimum: 500
type: integer
MachineDetectionPromptEndTimeout:
description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds.
Used when `DetectionMode` is `PremiumCallScreening`.
example: 5000
minimum: 1000
maximum: 120000
type: integer
MachineDetectionSpeechThreshold:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored
when `premium` detection is used.
example: 2000
default: 3500
type: integer
MachineDetectionSpeechEndThreshold:
description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when
`premium` detection is used.
example: 2000
default: 800
type: integer
MachineDetectionSilenceTimeout:
description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium`
detection is used.
example: 2000
default: 3500
type: integer
MachineDetectionBeepProfile:
description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors
to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default
profile. Only used when MachineDetection is enabled.
example: freq_only
default: both
type: string
enum:
- both
- freq_only
MachineDetectionBeepMinFrequency:
description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes
North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile
is in use. Only used when MachineDetection is enabled.
type: integer
example: 550
format: int32
minimum: 200
maximum: 4000
MachineDetectionBeepMaxFrequency:
description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when MachineDetection
is enabled.
type: integer
example: 2000
format: int32
minimum: 200
maximum: 4000
MachineDetectionBeepMinToneDuration:
description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such
as call-progress blips. Only used when MachineDetection is enabled.
type: integer
example: 300
format: int32
minimum: 50
maximum: 5000
MachineDetectionBeepSpectralConfirmation:
description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only used
when MachineDetection is enabled.
type: boolean
example: true
MachineDetectionBeepSpectralWindow:
description: Length of the spectral confirmation window, in milliseconds. Only used when MachineDetection is enabled.
type: integer
example: 100
format: int32
minimum: 20
maximum: 1000
MachineDetectionBeepSpectralMinPurity:
description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed
tones such as ringback, which combines two frequencies. Only used when MachineDetection is enabled.
type: number
example: 0.8
minimum: 0
maximum: 1
MachineDetectionBeepSpectralRejectFaxCng:
description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when MachineDetection
is enabled.
type: boolean
example: true
CancelPlaybackOnMachineDetection:
description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`.
default: true
example: false
type: boolean
CancelPlaybackOnDetectMessageEnd:
description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`.
default: true
example: false
type: boolean
DeepfakeDetection:
description: Enables Deepfake Detection on the dialed call. When enabled, audio from the remote party is analyzed
to determine whether the voice is AI-generated. Results are delivered asynchronously via a callback.
example: Enable
type: string
enum:
- Enable
DeepfakeDetectionCallbackUrl:
description: URL destination for Telnyx to send deepfake detection callback events to for the call.
example: https://www.example.com/deepfake-callback
type: string
DeepfakeDetectionCallbackMethod:
description: HTTP request type used for `DeepfakeDetectionCallbackUrl`.
example: GET
default: POST
type: string
enum:
- GET
- POST
PreferredCodecs:
description: The list of comma-separated codecs to be offered on a call.
example: PCMA,PCMU
type: string
Record:
description: Whether to record the entire participant's call leg. Defaults to `false`.
example: false
type: boolean
RecordingChannels:
description: The number of channels in the final recording. Defaults to `mono`.
example: dual
type: string
enum:
- mono
- dual
RecordingStatusCallback:
description: The URL the recording callbacks will be sent to.
example: https://example.com/recording_status_callback
type: string
RecordingStatusCallbackMethod:
description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can
be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTimeout:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. Please note that the transcription is used to detect silence
and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite)
example: 5
type: integer
default: 0
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
SendRecordingUrl:
$ref: '#/components/schemas/SendRecordingUrl'
SipAuthPassword:
description: The password to use for SIP authentication.
example: '1234'
type: string
SipAuthUsername:
description: The username to use for SIP authentication.
example: user
type: string
Trim:
description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
CustomHeaders:
description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value'
properties.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom header
value:
type: string
description: The value of the custom header
required:
- name
- value
example:
- name: X-Custom-Header
value: custom-value
SipRegion:
description: Defines the SIP region to be used for the call.
type: string
default: US
enum:
- US
- Europe
- Canada
- Australia
- Middle East
example: Canada
MediaEncryption:
description: Defines whether media should be encrypted on the call. When set to `SRTP`, the call will use Secure
Real-time Transport Protocol for media encryption. When set to `DTLS`, the call will use DTLS for media encryption.
Only supported for SIP destinations.
example: disabled
default: disabled
type: string
enum:
- disabled
- SRTP
- DTLS
SuperviseCallSid:
description: The call control ID of the existing call to supervise. When provided, the created leg will be added
to the specified call in supervising mode. Status callbacks and action callbacks will NOT be sent for the supervising
leg.
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
type: string
SupervisingRole:
description: 'The supervising role for the new leg. Determines the audio behavior: barge (hear both sides), whisper
(only hear supervisor), monitor (hear both sides but supervisor muted). Default: barge'
example: monitor
type: string
enum:
- barge
- whisper
- monitor
default: barge
Timeout:
description: The number of seconds to wait for the called party to answer the call before the call is canceled.
The minimum value is 5 and the maximum value is 120. Default is 30 seconds.
example: 60
type: integer
minimum: 5
maximum: 120
default: 30
x-stainless-param: timeout_seconds
TimeLimit:
description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400
(4 hours). Default is 14400 seconds.
example: 3600
type: integer
minimum: 30
maximum: 14400
default: 14400
Texml:
description: TeXML to be used as instructions for the call. If provided, the call will execute these instructions
instead of fetching from the Url.
example: Hello
type: string
oneOf:
- title: With URL
required:
- Url
properties:
Texml:
not: {}
- title: With TeXML
required:
- Texml
properties:
Url:
not: {}
- title: Application Default
properties:
Url:
not: {}
Texml:
not: {}
example:
To: '+13121230000'
From: '+13120001234'
Url: https://www.example.com/texml.xml
StatusCallback: https://www.example.com/statuscallback-listener
ApplicationSid: '1293384261075731499'
InitiateCallResult:
type: object
title: Initaite TeXML Call Result
example:
from: '+13120001234'
to: '+13121230000'
status: queued
properties:
from:
type: string
example: '+13120001234'
to:
type: string
example: '+13120000000'
status:
type: string
example: accepted
InsightSettings:
properties:
insight_group_id:
type: string
description: Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's
conversations.
model:
anyOf:
- type: string
- type: 'null'
description: The model that generates the assistant's insights when a conversation ends. It runs every insight in
the group, Telnyx-managed insights included. Must be `zai-org/GLM-5.3-Flash` or `meta-llama/Llama-3.3-70B-Instruct`;
any other model returns `422`. When omitted on create, it defaults to `zai-org/GLM-5.3-Flash`; when omitted on
update, the current model is kept. `null` uses Telnyx's default insight models, which assistants created before
this setting have. Insights of messaging conversations, and insights regenerated later, always use Telnyx's default
insight models.
example: zai-org/GLM-5.3-Flash
type: object
InsightTemplateCreateReq:
properties:
instructions:
type: string
title: Instructions
name:
type: string
title: Name
webhook:
type: string
title: Webhook
default: ''
json_schema:
anyOf:
- type: string
- type: object
title: JsonSchemaObject
title: Json Schema
description: If specified, the output will follow the JSON schema.
type: object
required:
- instructions
- name
title: InsightTemplateCreateReq
InsightTemplateDetailRespData:
properties:
data:
$ref: '#/components/schemas/InsightTemplateResp'
type: object
required:
- data
title: InsightTemplateDetailRespData
InsightTemplateGroupCreateReq:
properties:
name:
type: string
title: Name
description:
type: string
title: Description
webhook:
type: string
title: Webhook
default: ''
type: object
required:
- name
title: InsightTemplateGroupCreateReq
InsightTemplateGroupDetailRespData:
properties:
data:
$ref: '#/components/schemas/InsightTemplateGroupResp'
type: object
required:
- data
title: InsightTemplateGroupDetailRespData
InsightTemplateGroupResp:
properties:
id:
type: string
format: uuid
title: Id
name:
type: string
title: Name
description:
type: string
title: Description
created_at:
type: string
format: date-time
title: Created At
insights:
items:
$ref: '#/components/schemas/InsightTemplateResp'
type: array
title: Insights
webhook:
type: string
title: Webhook
default: ''
type: object
required:
- id
- name
- created_at
title: InsightTemplateGroupResp
InsightTemplateGroupUpdateReq:
properties:
name:
type: string
title: Name
description:
type: string
title: Description
webhook:
type: string
title: Webhook
type: object
title: InsightTemplateGroupUpdateReq
InsightTemplateResp:
properties:
id:
type: string
format: uuid
title: Id
instructions:
type: string
title: Instructions
created_at:
type: string
format: date-time
title: Created At
insight_type:
$ref: '#/components/schemas/TemplateType'
default: custom
name:
type: string
title: Name
default: ''
webhook:
type: string
title: Webhook
default: ''
json_schema:
anyOf:
- type: string
- type: object
title: JsonSchemaObject
title: Json Schema
description: If specified, the output will follow the JSON schema.
type: object
required:
- id
- instructions
- created_at
title: InsightTemplateResp
InsightTemplateUpdateReq:
properties:
instructions:
type: string
title: Instructions
name:
type: string
title: Name
webhook:
type: string
title: Webhook
json_schema:
anyOf:
- type: string
- type: object
title: JsonSchemaObject
title: Json Schema
type: object
title: InsightTemplateUpdateReq
IntId:
title: Int ID
type: string
description: Uniquely identifies the resource.
example: '1293384261075731499'
Integration:
type: object
properties:
id:
type: string
title: Id
name:
type: string
title: Name
display_name:
type: string
title: Display Name
description:
type: string
title: Description
logo_url:
type: string
title: Logo Url
status:
type: string
enum:
- disconnected
- connected
title: Status
available_tools:
type: array
items:
type: string
title: Available Tools
required:
- id
- name
- display_name
- description
- logo_url
- status
- available_tools
title: Integration
IntegrationConnection:
type: object
properties:
id:
type: string
title: Id
integration_id:
type: string
title: Integration Id
allowed_tools:
type: array
items:
type: string
title: Allowed Tools
required:
- id
- integration_id
- allowed_tools
title: IntegrationConnection
IntegrationConnectionResponse:
type: object
properties:
data:
$ref: '#/components/schemas/IntegrationConnection'
required:
- data
title: IntegrationConnectionResponse
IntegrationConnectionsListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/IntegrationConnection'
title: Data
required:
- data
title: IntegrationConnectionsListResponse
IntegrationSecret:
properties:
record_type:
type: string
title: Record Type
example: integration_secret
id:
type: string
title: Id
identifier:
type: string
title: Identifier
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- record_type
- id
- identifier
- created_at
title: IntegrationSecret
IntegrationSecretCreatedResponse:
properties:
data:
$ref: '#/components/schemas/IntegrationSecret'
type: object
required:
- data
title: IntegrationSecretCreatedResponse
IntegrationSecretsListData:
properties:
data:
items:
$ref: '#/components/schemas/IntegrationSecret'
type: array
title: Data
meta:
$ref: '#/components/schemas/integration-secrets_Metadata'
type: object
required:
- data
- meta
title: SecretsListData
IntegrationsListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Integration'
title: Data
required:
- data
title: IntegrationsListResponse
Interface:
type: object
properties:
network_id:
description: The id of the network associated with the interface.
type: string
format: uuid
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
name:
type: string
description: A user specified name for the interface.
example: test interface
status:
$ref: '#/components/schemas/InterfaceStatus'
InterfaceStatus:
type: string
enum:
- created
- provisioning
- provisioned
- deleting
description: The current status of the interface deployment.
readOnly: true
example: provisioned
InterruptionSettings:
type: object
description: Settings for handling user interruptions during assistant speech
properties:
enable:
type: boolean
description: When true, allows users to interrupt the assistant while speaking
default: true
IntrospectRequest:
type: object
properties:
token:
type: string
description: The token to introspect
required:
- token
IntrospectResponse:
type: object
properties:
active:
type: boolean
description: Whether the token is active
scope:
type: string
description: Space-separated list of scopes
client_id:
type: string
description: Client identifier
exp:
type: integer
description: Expiration timestamp
iat:
type: integer
description: Issued at timestamp
iss:
type: string
description: Issuer
aud:
type: string
description: Audience
required:
- active
InventoryCoverage:
type: object
properties:
group:
type: string
example: '318'
group_type:
type: string
example: npa
number_range:
type: integer
example: 1
number_type:
type: string
enum:
- did
- toll-free
example: did
phone_number_type:
type: string
enum:
- local
- toll_free
- national
- landline
- shared_cost
- mobile
example: local
coverage_type:
type: string
enum:
- number
- block
example: number
record_type:
type: string
example: inventory_coverage_group
administrative_area:
type: string
example: NJ
count:
type: integer
example: 3
advance_requirements:
type: boolean
example: true
description: Indicates if the phone number requires advance requirements.
example:
group: '318'
group_type: npa
number_range: 1
number_type: did
phone_number_type: local
coverage_type: number
record_type: inventory_coverage_group
administrative_area: NJ
count: 3
advance_requirements: true
InventoryCoverageMetadata:
type: object
example:
total_results: 25
properties:
total_results:
type: integer
example: 25
InviteTool:
properties:
type:
type: string
enum:
- invite
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
invite:
$ref: '#/components/schemas/InviteToolConfig'
title: InviteToolConfig
type: object
required:
- type
- invite
title: InviteTool
InviteToolConfig:
properties:
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
targets:
oneOf:
- type: array
items:
type: object
properties:
name:
type: string
description: The name of the target.
example: Support
to:
type: string
description: The destination number or SIP URI of the call.
example: '+13129457420'
required:
- to
- type: string
description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables
webhook and resolves to an array of target objects at runtime.
example: '{{ targets }}'
- type: 'null'
description: The different possible targets of the invite. The assistant will be able to choose one of the targets
to invite to the call. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned
by the dynamic variables webhook and resolves to an array of target objects at runtime. If omitted or null, the
invite tool can still be configured and targets may be supplied dynamically at runtime.
custom_headers:
description: Custom headers to be added to the SIP INVITE for the invite command.
type: array
items:
type: object
properties:
name:
type: string
value:
description: The value of the header. Note that we support mustache templating for the value. For example
you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration
secret.
type: string
voicemail_detection:
type: object
description: Configuration for voicemail detection (AMD - Answering Machine Detection) on the invited call.
properties:
detection_mode:
type: string
enum:
- disabled
- premium
description: The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled'
turns off AMD detection.
on_voicemail_detected:
type: object
description: Action to take when voicemail is detected on the invited call.
properties:
action:
type: string
enum:
- stop_invite
description: The action to take when voicemail is detected.
type: object
required:
- from
title: InviteToolConfig
Invoice:
type: object
properties:
invoice_id:
type: string
format: uuid
example: 48eff763-ea80-4345-b688-78249eb165a8
file_id:
type: string
format: uuid
example: 454ea3b0-9eaa-4fa9-992e-6d9f31c0a37e
period_start:
type: string
format: date
example: '2023-11-01'
period_end:
type: string
format: date
example: '2023-11-30'
paid:
type: boolean
example: true
url:
type: string
format: uri
example: https://api.telnyx.com:443/v2/invoices/48eff763-ea80-4345-b688-78249eb165a8
InvoiceDetail:
type: object
properties:
invoice_id:
type: string
format: uuid
example: 48eff763-ea80-4345-b688-78249eb165a8
file_id:
type: string
format: uuid
example: 454ea3b0-9eaa-4fa9-992e-6d9f31c0a37e
period_start:
type: string
format: date
example: '2023-11-01'
period_end:
type: string
format: date
example: '2023-11-30'
paid:
type: boolean
example: true
url:
type: string
format: uri
example: https://api.telnyx.com:443/v2/invoices/48eff763-ea80-4345-b688-78249eb165a8
download_url:
type: string
format: uri
description: Present only if the query parameter `action=link` is set.
example: https://us-east-1.telnyxstorage.com/porting-documents/telnyx/...
InworldVoiceSettings:
type: object
title: Inworld Voice Settings
properties:
type:
type: string
enum:
- inworld
description: Voice settings provider type
delivery_mode:
type: string
enum:
- STABLE
- BALANCED
- CREATIVE
description: Controls the expressiveness and consistency of the Inworld `TTS2` model's speech synthesis. `STABLE`
favors consistent, predictable output, `CREATIVE` allows more expressive variation, and `BALANCED` sits in between.
Optional and only supported by `TTS2`; when omitted, the provider default applies.
required:
- type
Ip:
type: object
title: Ip
properties:
id:
type: string
description: Identifies the type of resource.
example: '1293384261075731499'
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: ip
connection_id:
type: string
description: ID of the IP Connection to which this IP should be attached.
ip_address:
type: string
description: IP adddress represented by this resource.
example: 192.168.0.0
port:
type: integer
description: Port to use when connecting to this IP.
default: 5060
example: 5060
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: ip
connection_id: '3456789987654'
ip_address: 192.168.0.0
port: 5060
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
IpConnection:
type: object
title: Ip Connection
properties:
id:
type: string
description: Identifies the type of resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: ip_connection
active:
type: boolean
description: Defaults to true
example: true
conversation_persistence:
type: boolean
description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the
connection are transcribed, stored, and indexed. Defaults to false.
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
type: string
example: string
transport_protocol:
type: string
description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.
default: UDP
enum:
- UDP
- TCP
- TLS
example: UDP
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
example: true
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON
true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled
and does not modify that setting. This API provisions the preference; call-processing behavior is implemented
separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
example: true
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
example: false
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
inbound:
$ref: '#/components/schemas/InboundIp'
outbound:
$ref: '#/components/schemas/OutboundIp'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: ip_connection
active: true
anchorsite_override: Latency
connection_name: string
transport_protocol: TLS
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: true
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
tags:
- tag1
- tag2
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_primary_ip_id: 192.0.2.1
default_secondary_ip_id: 198.51.100.1
default_tertiary_ip_id: 203.0.113.1
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: string
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 10
shaken_stir_enabled: true
outbound:
call_parking_enabled: true
ani_override: string
ani_override_type: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: string
t38_reinvite_source: customer
tech_prefix: string
ip_authentication_method: token
ip_authentication_token: string
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
IpPool:
type: object
description: An account-scoped pool of dedicated IPs. Mail uses a pool only when the pool is scoped to the sending domain
(`domain_id`) or is the account default (`is_default`).
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- ip_pool
name:
type: string
description: Pool name, unique within the account.
is_default:
type: boolean
description: Whether this is the account's default pool. The default pool carries mail for sending domains that
have no domain-scoped pool. At most one per account.
domain_id:
type: string
format: uuid
nullable: true
description: Email domain this pool is scoped to. The pool carries that domain's mail. Null when the pool is not
domain-scoped.
ips:
type: array
items:
$ref: '#/components/schemas/IpPoolMemberIp'
description: Member IPs with their routing weights. Populated by Retrieve an IP pool; list, create, and update responses
return an empty array.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
IpPoolAddIpRequest:
type: object
required:
- dedicated_ip_id
properties:
dedicated_ip_id:
type: string
format: uuid
description: The dedicated IP to add. It must belong to the account, must not be released, and must not already
be in a pool.
weight:
type: integer
description: Relative routing weight for this IP in the pool. Positive integer; defaults to 100.
minimum: 1
IpPoolCreateRequest:
type: object
required:
- name
properties:
name:
type: string
description: 'Pool name: 1-64 characters of lowercase letters, digits, `.`, `_`, and `-`, starting and ending with
a letter or digit. Must be unique within the account and must not start with `dip_`.'
is_default:
type: boolean
description: Make this the account's default pool, which carries mail for sending domains without a domain-scoped
pool. An account can have one default pool. Defaults to `false`.
domain_id:
type: string
format: uuid
description: Scope the pool to one of the account's email domains; the pool then carries that domain's mail. Scope
at most one pool to each domain.
IpPoolListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/IpPool'
required:
- data
IpPoolMemberIp:
description: A dedicated IP as a member of a pool, with its routing weight in this pool. Weight is a positive integer
(default 100).
allOf:
- $ref: '#/components/schemas/DedicatedIp'
type: object
properties:
weight:
type: integer
minimum: 1
description: Relative routing weight of this IP within the pool.
IpPoolShowResponse:
type: object
properties:
data:
$ref: '#/components/schemas/IpPool'
required:
- data
IpPoolUpdateRequest:
type: object
properties:
name:
type: string
description: 'Pool name: 1-64 characters of lowercase letters, digits, `.`, `_`, and `-`, starting and ending with
a letter or digit. Must be unique within the account and must not start with `dip_`.'
is_default:
type: boolean
description: Set or clear the account default flag. An account can have one default pool.
domain_id:
type: string
format: uuid
nullable: true
description: Scope the pool to one of the account's email domains, or `null` to remove the scope.
JWKSet:
type: object
properties:
keys:
type: array
items:
type: object
properties:
kty:
type: string
description: Key type
use:
type: string
description: Key use
alg:
type: string
description: Algorithm
kid:
type: string
description: Key ID
JoinConferenceRequest:
required:
- call_control_id
type: object
title: Join Conference Request
properties:
call_control_id:
description: Unique identifier and token for controlling the call
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==
type: string
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
Please note that the client_state will be updated for the participient call leg and the change will not affect
conferencing webhooks unless the participient is the owner of the conference.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
type: string
command_id:
description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with
the same `command_id` as one that has already been executed.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
type: string
end_conference_on_exit:
description: Whether the conference should end and all remaining participants be hung up after the participant leaves
the conference. Defaults to "false".
example: true
type: boolean
soft_end_conference_on_exit:
description: Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang
up the other participants. Defaults to "false".
example: true
type: boolean
hold:
description: Whether the participant should be put on hold immediately after joining the conference. Defaults to
"false".
example: true
type: boolean
hold_audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played to the participant when they are put on hold after joining the conference.
hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when "start_conference_on_create"
is set to "false". This property takes effect only if "hold" is set to "true".
hold_media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played to the participant when they are put on hold after joining the
conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization.
The file must either be a WAV or MP3 file. Takes effect only when "start_conference_on_create" is set to "false".
This property takes effect only if "hold" is set to "true".
mute:
description: Whether the participant should be muted immediately after joining the conference. Defaults to "false".
example: true
type: boolean
start_conference_on_enter:
description: Whether the conference should be started after the participant joins the conference. Defaults to "false".
example: true
type: boolean
supervisor_role:
description: Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors.
"barge" means the supervisor enters the conference as a normal participant. This is the same as "none". "monitor"
means the supervisor is muted but can hear all participants. "whisper" means that only the specified "whisper_call_control_ids"
can hear the supervisor. Defaults to "none".
example: whisper
type: string
enum:
- barge
- monitor
- none
- whisper
whisper_call_control_ids:
description: Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor
will join the conference as a monitoring participant only.
example:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
type: array
items:
type: string
beep_enabled:
description: Whether a beep sound should be played when the participant joins and/or leaves the conference. Can
be used to override the conference-level setting.
enum:
- always
- never
- on_enter
- on_exit
example: on_exit
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
end_conference_on_exit: true
hold: true
hold_audio_url: http://www.example.com/audio.wav
mute: true
start_conference_on_enter: true
supervisor_role: whisper
whisper_call_control_ids:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
beep_enabled: always
KvKey:
type: object
properties:
key:
type: string
example: user/123
size_bytes:
type: integer
description: Size of the stored value in bytes.
example: 21
updated_at:
type: string
format: date-time
example: '2026-06-18T14:48:17Z'
KvKeyListResponseWrapper:
type: object
properties:
record_type:
type: string
example: storage_kv_key
data:
type: array
items:
$ref: '#/components/schemas/KvKey'
meta:
$ref: '#/components/schemas/KvListMeta'
KvListMeta:
type: object
properties:
has_more:
type: boolean
description: Whether more results are available on a following page.
example: false
cursor:
type: string
description: Opaque cursor for the next page; pass it back as the `cursor` query parameter. Omitted when there are
no further results.
KvNamespace:
type: object
properties:
record_type:
type: string
example: storage_kv
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
example: my-cache
status:
type: string
description: Provisioning status. A namespace is usable once `status` is `provision_ok`. Once deletion completes,
the namespace no longer appears in the API.
enum:
- pending
- provision_ok
- provision_failed
- deleting
- delete_failed
example: provision_ok
created_at:
type: string
format: date-time
example: '2026-06-18T14:48:17Z'
updated_at:
type: string
format: date-time
example: '2026-06-18T14:48:17Z'
KvNamespaceListResponseWrapper:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/KvNamespace'
meta:
$ref: '#/components/schemas/edge-compute_PaginationMeta'
KvNamespaceResponseWrapper:
type: object
properties:
data:
$ref: '#/components/schemas/KvNamespace'
LLMCondition:
description: 'Edge condition routed by the assistant''s LLM from a natural-language
prompt.
How the edge is decided depends on the channel. On calls, each outgoing
`llm` condition is offered to the assistant''s model as a transition tool
alongside the assistant''s tools, and the edge fires when the model
selects it; the platform does not evaluate the prompt itself, and
instructions that forbid or discourage tool calls can stop these edges
from firing. On chat channels, the edge prompts are evaluated in a
separate model call after the reply, which does not use the assistant''s
instructions. Use this for fuzzy intents that aren''t expressible as a
deterministic expression (e.g. ''user wants to escalate to a human'').'
example:
prompt: The user has confirmed their booking details.
type: llm
properties:
prompt:
description: Natural-language criterion the model routes on. On calls this is offered to the model as the transition
tool's description; on chat channels it is judged as a statement in the post-reply evaluation call.
example: The user has confirmed their booking details.
title: Prompt
type: string
type:
const: llm
title: Type
type: string
required:
- type
- prompt
title: LLMCondition
type: object
LabelMutationRequest:
type: object
description: Labels to add or remove. Both operations are idempotent set operations, so a retried request converges
instead of failing.
properties:
labels:
type: array
description: One or more labels. Each label is a freeform, case-sensitive string of at most 255 characters; a message
or thread may carry at most 50 labels. The `telnyx:` prefix is a reserved system namespace and is rejected on
customer writes.
items:
type: string
minLength: 1
maxLength: 255
minItems: 1
maxItems: 50
required:
- labels
LeaveConferenceRequest:
required:
- call_control_id
type: object
title: Leave Conference Request
properties:
call_control_id:
description: Unique identifier and token for controlling the call
example: f91269aa-61d1-417f-97b3-10e020e8bc47
type: string
command_id:
description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with
the same `command_id` as one that has already been executed.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
type: string
beep_enabled:
description: Whether a beep sound should be played when the participant leaves the conference. Can be used to override
the conference-level setting.
enum:
- always
- never
- on_enter
- on_exit
example: on_exit
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_id: c46e06d7-b78f-4b13-96b6-c576af9640ff
beep_enabled: never
LeaveQueueRequest:
type: object
title: Leave Queue Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
LedgerBillingGroupReport:
type: object
properties:
record_type:
type: string
enum:
- ledger_billing_group_report
description: Identifies the type of the resource.
example: ledger_billing_group_report
id:
type: string
format: uuid
description: Identifies the type of resource.
organization_id:
type: string
format: uuid
description: Uniquely identifies the organization that owns the resource.
status:
type: string
description: Status of the ledger billing group report
enum:
- pending
- complete
- failed
- deleted
report_url:
type:
- string
- 'null'
description: External url of the ledger billing group report, if the status is complete
format: uri
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example:
record_type: ledger_billing_group_report
id: f5586561-8ff0-4291-a0ac-84fe544797bd
organization_id: f5586561-8ff0-4291-a0ac-84fe544797bd
report_url: https://example.com
created_at: '2019-10-15T10:07:15.527Z'
updated_at: '2019-10-15T10:07:15.527Z'
LinkTelnyxAgentRequest:
properties:
telnyx_agent_id:
type: string
title: Telnyx Agent Id
description: The Telnyx AI agent ID to link
type: object
required:
- telnyx_agent_id
title: LinkTelnyxAgentRequest
Links:
type: object
required:
- self
- records
properties:
self:
type: string
description: Link to this session analysis node.
records:
type: string
description: Link to the underlying detail records.
ListDialMetricsResponse:
type: object
title: List Dial Metrics Response
properties:
data:
type: array
items:
$ref: '#/components/schemas/DialMetric'
meta:
$ref: '#/components/schemas/DialMetricsListMeta'
ListMeta:
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 42
page_number:
type: integer
example: 1
page_size:
type: integer
example: 20
ListPushCredentialsResponse:
description: Mobile mobile push credentials
properties:
data:
type: array
items:
$ref: '#/components/schemas/PushCredential'
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
ListVerificationsResponse:
title: ListVerificationsResponse
required:
- data
- meta
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Verification'
meta:
$ref: '#/components/schemas/verify_Meta'
ListVerifiedNumbersResponse:
title: ListVerifiedNumbersResponse
description: A paginated list of Verified Numbers
required:
- data
- meta
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/VerifiedNumberResponse'
meta:
$ref: '#/components/schemas/verified-numbers_Meta'
ListVerifyProfileMessageTemplateResponse:
title: ListVerifyProfileMessageTemplateResponse
description: A list of Verify profile message templates
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/VerifyProfileMessageTemplateResponse'
ListVerifyProfilesResponse:
title: ListVerifyProfilesResponse
description: A paginated list of Verify profiles
required:
- data
- meta
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/VerifyProfileResponse'
meta:
$ref: '#/components/schemas/verify_Meta'
ListedMemory:
properties:
id:
type: string
title: Id
text:
type: string
title: Text
recorded_at:
anyOf:
- type: string
- type: 'null'
title: Recorded At
source_id:
anyOf:
- type: string
- type: 'null'
title: Source Id
description: The source this memory was extracted from. Set for a fact, which comes from exactly one source; null
for a memory derived from other memories. Read it with `GET .../sources/{source_id}`. A source deleted a moment
ago can still be named here, and then answers 404.
type: object
required:
- id
- text
- source_id
title: ListedMemory
LoaSignaturePayload:
type: object
description: Optional signature embedded in the rendered PDF. When omitted the PDF is returned unsigned for the customer
to sign and upload.
required:
- image_base64
properties:
image_base64:
type: string
description: Base64-encoded signature image.
signer_name:
type:
- string
- 'null'
Location:
type: object
title: Location
properties:
id:
$ref: '#/components/schemas/UUID'
additional_info:
type: string
example: 14th Floor
description:
type: string
example: Austin Office
is_default:
type: boolean
description: Represents whether the location is the default or not.
LocationResponse:
type: object
properties:
data:
type: object
properties:
location_id:
type: string
format: uuid
static_emergency_address_id:
type: string
format: uuid
accepted_address_suggestions:
type: boolean
LogMessage:
required:
- code
- title
type: object
properties:
code:
type: string
example: '10015'
x-format: int64
title:
type: string
example: Invalid attribute
detail:
type: string
example: The value provided for the attribute is not valid. Check the value used and try again.
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
example: /attribute
meta:
type: object
properties:
telephone_number:
type: string
description: The telephone number the log message is associated with, if any.
example: '+12345678'
external_connection_id:
type: string
example: '1293384261075731499'
description: The external connection the log message is associated with, if any.
x-format: int64
ticket_id:
type: string
format: uuid
example: 542c3bca-d247-42bc-8fe7-e01d16ecd761
description: The ticket ID for an operation that generated the log message, if any.
LogsMeta:
type: object
properties:
has_more:
type: boolean
partial:
type: boolean
Loopcount:
oneOf:
- type: string
- type: integer
MCC:
type: object
title: Mobile Country Code
properties:
code:
type: string
description: Mobile Country Code.
example: '311'
name:
type: string
description: The name of the country.
example: United States of America
required:
- code
- name
MCPServer:
type: object
properties:
id:
type: string
title: Id
name:
type: string
title: Name
type:
type: string
title: Type
url:
type: string
title: Url
api_key_ref:
type:
- string
- 'null'
title: Api Key Ref
allowed_tools:
type:
- array
- 'null'
items:
type: string
title: Allowed Tools
created_at:
type: string
format: date-time
title: Created At
required:
- id
- name
- type
- url
- created_at
title: MCPServer
MCPServersListResponse:
type: array
items:
$ref: '#/components/schemas/MCPServer'
title: MCPServersListResponse
MMSFallback:
type: object
properties:
from:
type: string
description: Phone number in +E.164 format
example: '+13125551234'
subject:
type: string
description: Subject of the message
example: Test Message
media_urls:
type: array
description: List of media URLs
items:
type: string
text:
type: string
description: Text
example: Hello world!
MachinePaymentAccountCredit:
type: object
description: An account-credit transaction settled through the Machine Payment Protocol.
properties:
id:
type: string
description: Unique identifier of the account-credit transaction.
record_type:
type: string
enum:
- machine_payment_account_credit
description: Record type identifier.
account_id:
type: string
description: Identifier of the credited Telnyx account. Derived from the authenticated user on the initial request
and from the verified payment credential on a paid retry — never from the request body.
amount:
type: string
description: Credited amount as a decimal string with two fractional digits.
currency:
type: string
description: ISO 4217 currency code of the credited amount (currently always USD).
payment_source:
type: string
enum:
- machine_payment
description: Payment source identifier distinguishing machine payments from other account-credit sources.
provider:
type: string
nullable: true
enum:
- stripe
- tempo
- null
description: Upstream payment provider that settled the payment.
payment_method:
type: string
nullable: true
enum:
- stripe_spt
- tempo_usdc
- null
description: 'Payment method used by the provider: `stripe_spt` for Stripe Shared Payment Token payments, `tempo_usdc`
for Tempo USDC payments.'
payment_intent_id:
type: string
nullable: true
description: Stripe PaymentIntent identifier for Stripe settlements. Absent for Tempo settlements.
receipt_reference:
type: string
nullable: true
description: 'Provider receipt reference: the Stripe PaymentIntent identifier for Stripe settlements, or the on-chain
transaction hash for Tempo settlements.'
mpp_resource:
type: string
nullable: true
description: Machine Payment Protocol resource identifier the payment credential was bound to.
status:
type: string
nullable: true
enum:
- new
- processing
- settled
- expired
- invalid
- null
description: Status of the transaction. Successful machine payment credits are recorded as `settled`.
created:
type: boolean
description: True when this response created a new account credit, false when an existing transaction was returned
for a duplicate paid retry.
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the transaction was created.
required:
- id
- record_type
- account_id
- amount
- currency
- payment_source
MachinePaymentAccountCreditRequest:
type: object
required:
- amount_usd
properties:
amount_usd:
type: string
description: Amount to credit in USD, as a decimal string with up to two fractional digits (by default between 5.00
and 500.00). The request body is required on the initial challenge request and remains required on a paid retry,
where you re-send the identical body plus the payment credential — the credential, not the body, selects the payment,
and the retried body is not re-validated.
example: '10.00'
MachinePaymentAccountCreditResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MachinePaymentAccountCredit'
MachinePaymentSuspendedAccountFailure:
type: object
description: Legacy failure envelope returned when the account is suspended.
properties:
success:
type: boolean
description: Always false for a failure response.
message:
type: string
description: Human-readable reason the request failed.
reasons:
type: array
items:
type: string
description: Additional machine-readable reasons for the failure.
required:
- success
- message
- reasons
MachinePaymentUpstreamError:
type: object
description: Error envelope proxied verbatim from the upstream machine payment service. Unlike the standard Telnyx `errors`
array, it carries a single top-level `error` message.
required:
- error
properties:
error:
type: string
description: Upstream error message.
example: Invalid Payment authorization credential
ManagedAccount:
type: object
title: ManagedAccount
required:
- record_type
- id
- email
- api_key
- api_user
- api_token
- manager_account_id
- created_at
- updated_at
properties:
record_type:
type: string
example: managed_account
enum:
- managed_account
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Uniquely identifies the managed account.
example: f65ceda4-6522-4ad6-aede-98de83385123
email:
type: string
format: email
description: The managed account's email.
example: user@example.com
api_key:
type: string
description: The managed account's V2 API access key
example: KEY01236170692E74656C6E79782E636F6D_YmlnIGlyb24gaXMgZGVhZA
api_user:
type: string
description: The manager account's email, which serves as the V1 API user identifier
example: managed_account@example.com
api_token:
type: string
description: The managed account's V1 API token
example: x6oexQNHTs-fZ7-QsDMOeg
organization_name:
type: string
description: The organization the managed account is associated with.
example: Example Company LLC
manager_account_id:
type: string
description: The ID of the manager account associated with the managed account.
example: f65ceda4-6522-4ad6-aede-98de83385123
balance:
$ref: '#/components/schemas/ManagedAccountBalance'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
managed_account_allow_custom_pricing:
type: boolean
description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not.
If false, uses the pricing of the manager account. Defaults to false. There may be time lag between when the value
is changed and pricing changes take effect.
example: true
rollup_billing:
type: boolean
description: Boolean value that indicates if the billing information and charges to the managed account "roll up"
to the manager account. If true, the managed account will not have its own balance and will use the shared balance
with the manager account. This value cannot be changed after account creation without going through Telnyx support
as changes require manual updates to the account ledger. Defaults to false.
example: false
ManagedAccountBalance:
type: object
properties:
record_type:
type: string
example: balance
enum:
- balance
description: Identifies the type of the resource.
balance:
type: string
description: The account's current balance.
example: '300.00'
x-format: decimal
credit_limit:
type: string
description: The account's credit limit.
example: '100.00'
x-format: decimal
available_credit:
type: string
description: Available amount to spend (balance + credit limit)
example: '400.00'
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
example: USD
x-format: iso4217
example:
record_type: balance
balance: '300.00'
credit_limit: '100.00'
available_credit: '400.00'
currency: USD
ManagedAccountMultiListing:
type: object
title: ManagedAccount
required:
- record_type
- id
- email
- api_user
- manager_account_id
- created_at
- updated_at
properties:
record_type:
type: string
example: managed_account
enum:
- managed_account
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Uniquely identifies the managed account.
example: f65ceda4-6522-4ad6-aede-98de83385123
email:
type: string
format: email
description: The managed account's email.
example: user@example.com
api_user:
type: string
description: The manager account's email, which serves as the V1 API user identifier
example: managed_account@example.com
organization_name:
type: string
description: The organization the managed account is associated with.
example: Example Company LLC
manager_account_id:
type: string
description: The ID of the manager account associated with the managed account.
example: f65ceda4-6522-4ad6-aede-98de83385123
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
managed_account_allow_custom_pricing:
type: boolean
description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not.
If false, uses the pricing of the manager account. Defaults to false. There may be time lag between when the value
is changed and pricing changes take effect.
example: true
rollup_billing:
type: boolean
description: Boolean value that indicates if the billing information and charges to the managed account "roll up"
to the manager account. If true, the managed account will not have its own balance and will use the shared balance
with the manager account. This value cannot be changed after account creation without going through Telnyx support
as changes require manual updates to the account ledger. Defaults to false.
example: false
ManagedAccountsGlobalOutboundChannels:
title: Managed Accounts Global Outbound Channels
properties:
managed_account_allow_custom_pricing:
type: boolean
description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not.
If false, uses the pricing of the manager account. Defaults to false. This value may be changed, but there may
be time lag between when the value is changed and pricing changes take effect.
example: false
allocatable_global_outbound_channels:
type: integer
description: The total amount of allocatable global outbound channels available to the authenticated manager. Will
be 0 if the feature is not enabled for their account.
example: 500
record_type:
type: string
description: The type of the data contained in this record.
example: allocatable_global_outbound_channels
total_global_channels_allocated:
type: integer
description: The total number of allocatable global outbound channels currently allocated across all managed accounts
for the authenticated user. This includes any amount of channels allocated by default at managed account creation
time. Will be 0 if the feature is not enabled for their account.
example: 135
example:
allocatable_global_outbound_channels: 500
record_type: allocatable_global_outbound_channels
total_global_channels_allocated: 135
type: object
MdrDeleteDetailReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrDetailReportResponse'
MdrDeleteUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponseLegacy'
MdrDeleteUsageReportsResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponse'
MdrDetailReportResponse:
type: object
properties:
id:
type: string
description: Identifies the resource
format: uuid
start_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
end_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
directions:
type: array
items:
type: string
enum:
- INBOUND
- OUTBOUND
record_types:
type: array
items:
type: string
enum:
- INCOMPLETE
- COMPLETED
- ERRORS
connections:
type: array
items:
type: integer
format: int64
report_name:
type: string
example: report_name_8hvb45Gu
status:
type: string
enum:
- PENDING
- COMPLETE
- FAILED
- EXPIRED
report_url:
type: string
example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv
filters:
type: array
items:
$ref: '#/components/schemas/Filter'
created_at:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
updated_at:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
profiles:
type: array
description: List of messaging profile IDs
items:
type: string
format: uuid
example:
- 3fa85f64-5717-4562-b3fc-2c963f66afa6
- 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f
record_type:
type: string
example: mdr_report
MdrDetailResponse:
type: object
properties:
created_at:
type: string
description: Message sent time
format: date-time
example: '2020-07-01T00:00:00-06:00'
profile_name:
type: string
description: Configured profile name. New profiles can be created and configured on Telnyx portal
example: configured-profile-name
direction:
type: string
description: Direction of message - inbound or outbound.
example: outbound
parts:
type: number
description: Number of parts this message has. Max number of character is 160. If message contains more characters
then that it will be broken down in multiple parts
example: 2
status:
type: string
description: Message status
example: DELIVERED
enum:
- GW_TIMEOUT
- DELIVERED
- DLR_UNCONFIRMED
- DLR_TIMEOUT
- RECEIVED
- GW_REJECT
- FAILED
cld:
type: string
description: The destination number for a call, or the callee
example: '+1555123456'
cli:
type: string
description: The number associated with the person initiating the call, or the caller
example: '+1555123456'
rate:
type: string
description: Rate applied to the message
example: '0.05'
cost:
type: string
description: Final cost. Cost is calculated as rate * parts
example: '0.1'
currency:
type: string
description: Currency of the rate and cost
example: USD
enum:
- AUD
- CAD
- EUR
- GBP
- USD
id:
type: string
description: Id of message detail record
example: 99b637f3-07fd-45ac-b9ca-b87208c24650
message_type:
type: string
description: Type of message
example: SMS
enum:
- SMS
- MMS
record_type:
type: string
example: mdr_report
MdrDetailedRequest:
required:
- start_time
- end_time
type: object
properties:
start_time:
type: string
description: Start time in ISO format
format: date-time
example: '2024-02-01T00:00:00Z'
end_time:
type: string
description: 'End time in ISO format. Note: If end time includes the last 4 hours, some MDRs might not appear in
this report, due to wait time for downstream message delivery confirmation'
format: date-time
example: '2024-02-12T23:59:59Z'
timezone:
type: string
description: Timezone for the report
example: UTC
directions:
type: array
description: List of directions to filter by (Inbound = 1, Outbound = 2)
items:
type: integer
format: int32
example:
- 1
- 2
record_types:
type: array
description: List of record types to filter by (Complete = 1, Incomplete = 2, Errors = 3)
items:
type: integer
format: int32
example:
- 1
- 2
connections:
type: array
description: List of connections to filter by
items:
type: integer
format: int64
example:
- 123
- 456
report_name:
type: string
description: Name of the report
example: My MDR Report
include_message_body:
type: boolean
description: Whether to include message body in the report
example: true
filters:
type: array
description: List of filters to apply
items:
$ref: '#/components/schemas/Filter'
profiles:
type: array
description: List of messaging profile IDs to filter by
items:
type: string
format: uuid
example:
- 3fa85f64-5717-4562-b3fc-2c963f66afa6
- 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f
managed_accounts:
type: array
description: List of managed accounts to include
items:
type: string
format: uuid
example:
- f47ac10b-58cc-4372-a567-0e02b2c3d479
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
select_all_managed_accounts:
type: boolean
description: Whether to select all managed accounts
example: false
description: Request object for MDR detailed report
MdrGetDetailReportByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrDetailReportResponse'
MdrGetDetailReportResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrDetailReportResponse'
meta:
$ref: '#/components/schemas/batch-csv_PaginationMeta_705dfa7312'
MdrGetDetailResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrDetailResponse'
meta:
$ref: '#/components/schemas/reporting_PaginationMeta'
MdrGetSyncUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponse'
MdrGetUsageReportByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponseLegacy'
MdrGetUsageReportsByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponse'
MdrGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrUsageReportResponse'
meta:
$ref: '#/components/schemas/reporting_PaginationMeta'
MdrPostDetailReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrDetailReportResponse'
MdrPostUsageReportRequest:
required:
- aggregation_type
- end_date
- start_date
type: object
properties:
start_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
end_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
aggregation_type:
type: string
enum:
- NO_AGGREGATION
- PROFILE
- TAGS
profiles:
type: string
example: My profile
MdrPostUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponseLegacy'
MdrPostUsageReportsResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MdrUsageReportResponse'
MdrUsageRecord:
type: object
properties:
cost:
type: string
example: '0'
direction:
type: string
example: outbound
product:
type: string
example: outbound
connection:
type: string
example: all
received:
type: string
example: '0'
delivered:
type: string
example: '0'
currency:
type: string
example: USD
parts:
type: string
example: '0'
sent:
type: string
example: '0'
profile_id:
type: string
example: All
tags:
type: string
example: All
message_type:
type: string
example: SMS
tn_type:
type: string
example: TF
carrier_passthrough_fee:
type: string
example: '0'
MdrUsageReportResponse:
type: object
properties:
id:
type: string
description: Identifies the resource
format: uuid
start_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
end_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
connections:
type: array
items:
type: integer
format: int64
aggregation_type:
type: string
enum:
- NO_AGGREGATION
- PROFILE
- TAGS
status:
type: string
enum:
- PENDING
- COMPLETE
- FAILED
- EXPIRED
report_url:
type: string
example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv
result:
type: array
items:
$ref: '#/components/schemas/MdrUsageRecord'
created_at:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
updated_at:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
profiles:
type: string
example: My profile
record_type:
type: string
example: mdr_usage_report
MdrUsageReportResponseLegacy:
type: object
properties:
id:
type: string
description: Identifies the resource
format: uuid
start_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
end_time:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
connections:
uniqueItems: true
type: array
example:
- '1234567890'
- '9876543210'
items:
type: string
aggregation_type:
type: integer
description: 'Aggregation type: No aggregation = 0, By Messaging Profile = 1, By Tags = 2'
format: int32
status:
type: integer
description: Status of the report (Pending = 1, Complete = 2, Failed = 3, Expired = 4)
format: int32
report_url:
type: string
example: http://portal.telnyx.com/downloads/report_name_8hvb45Gu.csv
result:
type: object
created_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521Z'
profiles:
type: array
description: List of messaging profile IDs
items:
type: string
format: uuid
example:
- 3fa85f64-5717-4562-b3fc-2c963f66afa6
- 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f
record_type:
type: string
example: mdr_usage_report_v2_legacy
description: Legacy V2 MDR usage report response
MdrUsageRequestLegacy:
required:
- aggregation_type
type: object
properties:
start_time:
type: string
format: date-time
example: '2020-01-01T00:00:00Z'
end_time:
type: string
format: date-time
example: '2020-01-02T00:00:00Z'
aggregation_type:
type: integer
description: 'Aggregation type: No aggregation = 0, By Messaging Profile = 1, By Tags = 2'
format: int32
example: 0
profiles:
type: array
description: List of messaging profile IDs to filter by
items:
type: string
format: uuid
example:
- 3fa85f64-5717-4562-b3fc-2c963f66afa6
- 7d4e3f8a-9b2c-4e1d-8f5a-1a2b3c4d5e6f
select_all_managed_accounts:
type: boolean
example: true
managed_accounts:
type: array
description: List of managed accounts to include
items:
type: string
format: uuid
example:
- f47ac10b-58cc-4372-a567-0e02b2c3d479
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
description: MDR usage request parameters
MediaFeatures:
description: The media features settings for a phone number.
type: object
properties:
rtp_auto_adjust_enabled:
type: boolean
default: true
description: When RTP Auto-Adjust is enabled, the destination RTP address port will be automatically changed to
match the source of the incoming RTP packets.
accept_any_rtp_packets_enabled:
type: boolean
default: false
description: When enabled, Telnyx will accept RTP packets from any customer-side IP address and port, not just those
to which Telnyx is sending RTP.
t38_fax_gateway_enabled:
type: boolean
default: false
description: Controls whether Telnyx will accept a T.38 re-INVITE for this phone number. Note that Telnyx will not
send a T.38 re-INVITE; this option only controls whether one will be accepted.
example:
rtp_auto_adjust_enabled: true
accept_any_rtp_packets_enabled: true
t38_fax_gateway_enabled: true
MediaName:
description: 'The media_name used for the fax''s media. Must point to a file previously uploaded to api.telnyx.com/v2/media
by the same user/organization. Supported formats: PDF, TIFF, JPEG, PNG, DOC, DOCX, RTF, and TXT. media_name and media_url/contents
can''t be submitted together.'
type: string
example: my_media_uploaded_to_media_storage_api
MediaResource:
type: object
title: Media Resource
properties:
media_name:
description: Uniquely identifies a media resource.
type: string
expires_at:
description: ISO 8601 formatted date of when the media resource will expire and be deleted.
type: string
example: '2020-01-23T18:10:02.574Z'
created_at:
type: string
description: ISO 8601 formatted date of when the media resource was created
example: '2019-01-23T18:10:02.574Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the media resource was last updated
example: '2019-01-23T18:10:02.574Z'
content_type:
type: string
description: Content type of the file
example: application/xml
example:
media_name: f5586561-8ff0-4291-a0ac-84fe544797bd
expires_at: '2020-01-23T18:10:02.574Z'
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
content_type: application/xml
MediaStorageDetailRecord:
type: object
properties:
id:
type: string
description: Unique identifier for the Media Storage Event
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
created_at:
type: string
description: Event creation time
format: date-time
example: '2020-07-01T00:00:00Z'
asset_id:
type: string
description: Asset id
example: a46f4764-4ce4-4391-804c-02f00bc4ff9b
user_id:
type: string
description: User id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
org_id:
type: string
description: Organization owner id
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
action_type:
type: string
description: Type of action performed against the Media Storage API
example: upload
link_channel_type:
type: string
description: Link channel type
example: message
link_channel_id:
type: string
description: Link channel id
example: 2065f482-64b9-4680-a3a9-c6d3142efdf7
status:
type: string
description: Request status
example: failed
webhook_id:
type: string
description: Webhook id
example: b46f4764-4ce4-4391-804c-02f00bc4ff9b
rate:
type: string
description: Currency amount per billing unit used to calculate the Telnyx billing cost
example: '0.0001'
rate_measured_in:
type: string
description: Billing unit used to calculate the Telnyx billing cost
example: events
cost:
type: string
description: Currency amount for Telnyx billing cost
example: '0.004'
currency:
type: string
description: Telnyx account currency used to describe monetary values, including billing cost
example: USD
record_type:
type: string
example: media_storage
default: media_storage
required:
- record_type
MediaUrl:
description: 'The URL (or list of URLs) to the fax document. Supported formats: PDF, TIFF, JPEG, PNG, DOC, DOCX, RTF,
and TXT. media_url and media_name/contents can''t be submitted together.'
type: string
example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
MeetingSession:
title: MeetingSession
type: object
additionalProperties: false
description: Represents a meeting session. All serializer fields are present and required; nullable fields use null
when absent. No actor, provider-bot, idempotency, routing, key, or internal fields are exposed.
required:
- id
- account_id
- provider
- status
- status_detail
- recording
- meeting_url
- platform
- bot_name
- config
- avatar
- avatar_state
- avatar_state_changed_at
- assistant
- assistant_state
- assistant_state_changed_at
- webhook_url
- metadata
- failure_reason
- created_at
- join_at
- joined_at
- ended_at
- updated_at
properties:
id:
type: string
description: Unique identifier for the meeting session.
account_id:
type: string
description: Identifier of the owning account.
provider:
type: string
description: Provider handling the meeting session.
status:
type: string
enum:
- scheduled
- joining
- waiting_for_admission
- active
- leaving
- ended
- failed
- admission_denied
description: Lifecycle status. `waiting_for_admission` means the bot reached the meeting lobby and may require host
approval. `active` means the bot entered the meeting/media path. `ended` alone does not prove attendance; use
non-null `joined_at` as positive evidence that the session became active. `admission_denied` is reserved for an
explicit provider denial, while cancellation or another termination can end a never-admitted session as `ended`.
status_detail:
type:
- string
- 'null'
description: Additional human-readable detail about the status, or null.
recording:
type: boolean
description: Whether the session is being recorded.
meeting_url:
type: string
format: uri
description: The meeting URL the bot joins.
platform:
type: string
enum:
- zoom
- google_meet
- teams
- webex
- unknown
description: Detected meeting platform.
bot_name:
type: string
description: Display name of the bot in the meeting.
config:
$ref: '#/components/schemas/MeetingSessionConfig'
avatar:
oneOf:
- $ref: '#/components/schemas/MeetingSessionAvatar'
- type: 'null'
description: 'The assistant''s avatar when the session was created with `assistant.avatar: true`, otherwise null.'
avatar_state:
type:
- string
- 'null'
enum:
- starting
- connected
- degraded
- disconnected
- null
description: Current state of the avatar, or null if the session has no avatar. `starting` until the avatar's video
is playing, then `connected`; `degraded` when the session has fallen back to voice-only (the `avatar.degraded`
event carries the reason); `disconnected` when the avatar has ended.
avatar_state_changed_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the last avatar state change, or null.
assistant:
oneOf:
- $ref: '#/components/schemas/MeetingSessionAssistant'
- type: 'null'
description: Assistant configuration if an assistant is attached, otherwise null.
assistant_state:
type:
- string
- 'null'
enum:
- starting
- connected
- failed
- ended
- null
description: Current state of the assistant, or null if no assistant is attached.
assistant_state_changed_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the last assistant state change, or null.
webhook_url:
type:
- string
- 'null'
format: uri
description: Webhook endpoint for session lifecycle callbacks, or null if not configured.
metadata:
type: object
additionalProperties: true
description: Arbitrary key-value metadata attached to the session.
failure_reason:
type:
- string
- 'null'
description: Human-readable failure reason if the session failed, or null.
created_at:
type: string
format: date-time
description: Timestamp when the session was created.
join_at:
type:
- string
- 'null'
format: date-time
description: Scheduled join time, or null for immediate join.
joined_at:
type:
- string
- 'null'
format: date-time
description: Timestamp when the session first became `active`, or null if it never became active. This remains positive
admission evidence after terminal transitions.
ended_at:
type:
- string
- 'null'
format: date-time
description: Timestamp when the session ended, or null if ongoing.
updated_at:
type: string
format: date-time
description: Timestamp of the last update to the session.
MeetingSessionArtifact:
type: object
required:
- id
- session_id
- type
- status
- content
- model_provenance
- failure_reason
- created_at
- updated_at
- prompt
properties:
id:
type: string
session_id:
type: string
type:
type: string
enum:
- summary
- action_items
- decisions
- topics
- open_questions
- custom
status:
type: string
enum:
- pending
- completed
- failed
content:
anyOf:
- $ref: '#/components/schemas/ArtifactContent'
- type: 'null'
model_provenance:
anyOf:
- $ref: '#/components/schemas/ModelProvenance'
- type: 'null'
failure_reason:
type:
- string
- 'null'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
prompt:
anyOf:
- type: string
- type: 'null'
description: The prompt that produced this artifact, or null for a named type. Non-null only when `type` is `custom`;
the five named types always return `null`.
examples:
- id: mtgart_550e8400-e29b-41d4-a716-446655440000
session_id: mtgsess_550e8400-e29b-41d4-a716-446655440001
type: action_items
status: pending
content: null
model_provenance: null
failure_reason: null
created_at: '2025-01-15T10:30:00Z'
updated_at: '2025-01-15T10:30:00Z'
prompt: null
- id: mtgart_550e8400-e29b-41d4-a716-446655440002
session_id: mtgsess_550e8400-e29b-41d4-a716-446655440001
type: summary
status: completed
content:
text: The team reviewed project goals and agreed on next steps.
model_provenance:
model: example-model
provider: example-provider
failure_reason: null
created_at: '2025-01-15T10:30:00Z'
updated_at: '2025-01-15T10:31:00Z'
prompt: null
additionalProperties: false
MeetingSessionArtifactListResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/MeetingSessionArtifact'
MeetingSessionArtifactResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
$ref: '#/components/schemas/MeetingSessionArtifact'
MeetingSessionAssistant:
title: MeetingSessionAssistant
type: object
additionalProperties: false
required:
- id
- audio_gate
- dynamic_variables
- leave_on_end
properties:
id:
type: string
description: Identifier of the assistant.
audio_gate:
type: string
enum:
- half_duplex
- full_duplex
description: Audio gating strategy in force for the assistant call leg.
dynamic_variables:
anyOf:
- type: object
additionalProperties:
type: string
- type: 'null'
description: The dynamic variables in force for this session, or null when none were supplied.
leave_on_end:
type: boolean
description: Whether the bot leaves when the Assistant's conversation ends or fails.
MeetingSessionAssistantRequest:
title: MeetingSessionAssistantRequest
type: object
additionalProperties: false
description: Attach a Telnyx AI Assistant to the session. Supply the Assistant's ID; the Meeting service connects it
to the meeting directly. The Call Control connection, caller ID and loopback SIP URI previously required here have
been removed and are now rejected as unknown fields.
required:
- id
properties:
id:
type: string
minLength: 1
maxLength: 255
description: Identifier of the assistant to attach.
audio_gate:
type: string
enum:
- half_duplex
- full_duplex
default: half_duplex
description: 'Audio gating strategy for the assistant call leg. `half_duplex` (default) sends the assistant a single
mixed meeting stream and mutes it while the assistant speaks, so the assistant cannot hear itself and cannot be
interrupted. `full_duplex` sends a separate stream per participant, which allows barge-in and removes self-hearing,
and COSTS SIGNIFICANTLY MORE: per-participant streams multiply the per-minute cost by the number of participants.'
dynamic_variables:
type: object
description: Per-conversation values for the [dynamic variables](/docs/inference/ai-assistants/dynamic-variables)
used in the Assistant's instructions, greeting, or tools. Delivered before the Assistant's first utterance, so
they resolve for the opening line as well as the rest of the conversation. At most 63 entries; keys 1-128 characters;
values must be strings. The map is budgeted in aggregate at 1,047,552 bytes (1023 KiB) rather than capped per
value. `streaming_audio`, `ai_assistant_streaming_audio` and `meeting_session_id` are reserved and rejected with
`400 invalid_request` -- they toggle provider infrastructure or are set by the service rather than fill a prompt
template.
maxProperties: 63
propertyNames:
minLength: 1
maxLength: 128
not:
enum:
- streaming_audio
- ai_assistant_streaming_audio
- meeting_session_id
additionalProperties:
type: string
leave_on_end:
type: boolean
default: false
description: 'Leave the meeting when the Assistant''s conversation reaches a terminal state -- `ended` **or** `failed`.
Off by default, which leaves the bot in the meeting after the Assistant stops. Fires once: a second terminal transition
does not leave twice, and a leave the provider refuses is logged without changing how the session settles.'
avatar:
type: boolean
default: false
description: 'Beta. Show the avatar configured on the assistant (its `avatar_settings`; see [AI Assistant avatars](/docs/inference/ai-assistants/avatars))
as the bot''s camera, lip-synced to the assistant''s own speech. The request carries no avatar ID or key: the
assistant is read at creation and the request is rejected with 400 `invalid_request` if it has no Telnyx avatar
configured. Supported on Google Meet, Zoom, Microsoft Teams and Webex; other platforms return 422 `unsupported_capability`.
REST-only. Not echoed back on `assistant`; the session''s top-level `avatar` and `avatar_state` fields report
it instead. If the avatar fails, the session continues voice-only and `avatar_state` becomes `degraded`.'
MeetingSessionAvatar:
title: MeetingSessionAvatar
type: object
additionalProperties: false
description: The assistant's avatar, captured from its `avatar_settings` when the session was created. For display only;
later changes to the assistant do not update it.
required:
- provider
- model
- avatar_id
- background_id
properties:
provider:
type: string
const: telnyx
description: Avatar provider identifier.
model:
type: string
description: Avatar rendering model, for example `foxtrot-1`.
avatar_id:
type: string
description: Identifier of the avatar.
background_id:
type: string
description: Identifier of the avatar's background.
MeetingSessionCameraImage:
title: MeetingSessionCameraImage
type: object
description: Write-only static camera-tile image for this session, not a native account or participant profile photo.
Supply exactly one JPEG source. When effective, the image is used as the bot's static camera/video output; presentation
varies by meeting platform and recording configuration and is not guaranteed in recordings. An effective Avatar or
Assistant webpage output takes precedence, so this input is ignored and a URL source is not fetched.
writeOnly: true
oneOf:
- $ref: '#/components/schemas/MeetingSessionCameraImageBase64Source'
- $ref: '#/components/schemas/MeetingSessionCameraImageUrlSource'
MeetingSessionCameraImageBase64Source:
title: MeetingSessionCameraImageBase64Source
type: object
additionalProperties: false
required:
- format
- base64_data
properties:
format:
type: string
const: jpeg
description: Only JPEG images are accepted.
base64_data:
type: string
minLength: 4
maxLength: 1835008
pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
description: Canonical plain RFC 4648 Base64 for a valid decoded JPEG. Data URIs, whitespace, and the URL-safe alphabet
are rejected. The encoded value is limited to 1,835,008 characters and the decoded JPEG to 1,363,148 bytes. The
JPEG is limited to 4,096 pixels per dimension, 4 megapixels, and 128 MB of decoder memory. The image bytes are
not persisted, returned, or logged.
examples:
- format: jpeg
base64_data: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCAACAAIBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACP/EAB4QAAAEBwAAAAAAAAAAAAAAAAAEBgcCFic1RVNi/9oACAEBAAA/AH8hGJbWR09TxKW4vhC2qHgf/9k=
MeetingSessionCameraImageUrlSource:
title: MeetingSessionCameraImageUrlSource
type: object
additionalProperties: false
required:
- format
- url
properties:
format:
type: string
const: jpeg
description: Only JPEG images are accepted.
url:
type: string
format: uri
minLength: 1
maxLength: 2048
pattern: ^[Hh][Tt][Tt][Pp][Ss]://
description: Public HTTPS JPEG URL with at most 2,048 characters and no credentials, fragment, surrounding whitespace,
raw control characters, or explicit non-default port. Signed queries are allowed but must be treated as credentials.
Fetching is limited to public network destinations, a five-second timeout, no redirects, a 2xx image/jpeg response
with identity or no content encoding, and a 1,363,148-byte limit enforced against both declared and streamed content.
The service resolves the URL before bot creation and does not persist, return, or log the URL or image bytes.
examples:
- format: jpeg
url: https://cdn.example.com/bot-camera.jpg
MeetingSessionConfig:
title: MeetingSessionConfig
type: object
additionalProperties: false
required:
- voice
- speak_on_enter
- barge_in
- summarize_on_end
- chat_on_enter
properties:
voice:
type:
- string
- 'null'
description: Configured voice identifier, or null if not set.
speak_on_enter:
type:
- string
- 'null'
description: Text spoken on meeting entry, or null if not set.
chat_on_enter:
anyOf:
- type: string
- type: 'null'
description: The message posted to chat on join, or null when unset.
barge_in:
type: boolean
description: 'When enabled, a human participant `speech_on` event interrupts and stops the current bot audio; it
does not bypass admission or initiate speech. Assistant sessions reject `barge_in: true`.'
summarize_on_end:
type: boolean
description: Whether a summary artifact is generated on session end.
MeetingSessionCreated:
title: MeetingSessionCreated
type: object
additionalProperties: false
description: Response returned when a meeting session is first created. It is a full session representation plus an
optional `webhook_secret` that is returned only on the first successful create when a `webhook_url` is configured.
The secret is never replayed, listed, or retrievable on subsequent requests. No actor, provider-bot, idempotency,
routing, key, or internal fields are exposed.
required:
- id
- account_id
- provider
- status
- status_detail
- recording
- meeting_url
- platform
- bot_name
- config
- avatar
- avatar_state
- avatar_state_changed_at
- assistant
- assistant_state
- assistant_state_changed_at
- webhook_url
- metadata
- failure_reason
- created_at
- join_at
- joined_at
- ended_at
- updated_at
properties:
id:
type: string
description: Unique identifier for the meeting session.
account_id:
type: string
description: Identifier of the owning account.
provider:
type: string
description: Provider handling the meeting session.
status:
type: string
enum:
- scheduled
- joining
- waiting_for_admission
- active
- leaving
- ended
- failed
- admission_denied
description: Lifecycle status. `waiting_for_admission` means the bot reached the meeting lobby and may require host
approval. `active` means the bot entered the meeting/media path. `ended` alone does not prove attendance; use
non-null `joined_at` as positive evidence that the session became active. `admission_denied` is reserved for an
explicit provider denial, while cancellation or another termination can end a never-admitted session as `ended`.
status_detail:
type:
- string
- 'null'
description: Additional human-readable detail about the status, or null.
recording:
type: boolean
description: Whether the session is being recorded.
meeting_url:
type: string
format: uri
description: The meeting URL the bot joins.
platform:
type: string
enum:
- zoom
- google_meet
- teams
- webex
- unknown
description: Detected meeting platform.
bot_name:
type: string
description: Display name of the bot in the meeting.
config:
$ref: '#/components/schemas/MeetingSessionConfig'
avatar:
oneOf:
- $ref: '#/components/schemas/MeetingSessionAvatar'
- type: 'null'
description: 'The assistant''s avatar when the session was created with `assistant.avatar: true`, otherwise null.'
avatar_state:
type:
- string
- 'null'
enum:
- starting
- connected
- degraded
- disconnected
- null
description: Current state of the avatar, or null if the session has no avatar. `starting` until the avatar's video
is playing, then `connected`; `degraded` when the session has fallen back to voice-only (the `avatar.degraded`
event carries the reason); `disconnected` when the avatar has ended.
avatar_state_changed_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the last avatar state change, or null.
assistant:
oneOf:
- $ref: '#/components/schemas/MeetingSessionAssistant'
- type: 'null'
description: Assistant configuration if an assistant is attached, otherwise null.
assistant_state:
type:
- string
- 'null'
enum:
- starting
- connected
- failed
- ended
- null
description: Current state of the assistant, or null if no assistant is attached.
assistant_state_changed_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the last assistant state change, or null.
webhook_url:
type:
- string
- 'null'
format: uri
description: Webhook endpoint for session lifecycle callbacks, or null if not configured.
metadata:
type: object
additionalProperties: true
description: Arbitrary key-value metadata attached to the session.
failure_reason:
type:
- string
- 'null'
description: Human-readable failure reason if the session failed, or null.
created_at:
type: string
format: date-time
description: Timestamp when the session was created.
join_at:
type:
- string
- 'null'
format: date-time
description: Scheduled join time, or null for immediate join.
joined_at:
type:
- string
- 'null'
format: date-time
description: Timestamp when the session first became `active`, or null if it never became active. This remains positive
admission evidence after terminal transitions.
ended_at:
type:
- string
- 'null'
format: date-time
description: Timestamp when the session ended, or null if ongoing.
updated_at:
type: string
format: date-time
description: Timestamp of the last update to the session.
webhook_secret:
type: string
readOnly: true
description: Secret for validating webhook signatures. Returned only on the first successful create when `webhook_url`
is configured. Never replayed, listed, or retrievable on subsequent requests.
examples:
- id: mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890
account_id: acct_fake-uuid-0001
provider: telnyx
status: scheduled
status_detail: null
recording: false
meeting_url: https://zoom.us/j/1234567890
platform: zoom
bot_name: Notetaker
config:
voice: null
speak_on_enter: null
barge_in: false
summarize_on_end: false
chat_on_enter: null
avatar: null
avatar_state: null
avatar_state_changed_at: null
assistant: null
assistant_state: null
assistant_state_changed_at: null
webhook_url: null
metadata: {}
failure_reason: null
created_at: '2026-07-30T12:00:00Z'
join_at: '2026-07-30T13:00:00Z'
joined_at: null
ended_at: null
updated_at: '2026-07-30T12:00:00Z'
- id: mtgsess_b2c3d4e5-f6a7-8901-bcde-f23456789012
account_id: acct_fake-uuid-0002
provider: telnyx
status: joining
status_detail: null
recording: false
meeting_url: https://teams.microsoft.com/l/meetup-join/example
platform: teams
bot_name: Voice Assistant
config:
voice: voice-fake-001
speak_on_enter: Hello, I am joining.
barge_in: false
summarize_on_end: true
chat_on_enter: null
avatar: null
avatar_state: null
avatar_state_changed_at: null
assistant:
id: asst_fake-uuid-1234
audio_gate: half_duplex
dynamic_variables: null
leave_on_end: false
assistant_state: starting
assistant_state_changed_at: '2026-07-30T12:00:00Z'
webhook_url: https://example.invalid/webhooks/sessions
metadata: {}
failure_reason: null
created_at: '2026-07-30T12:00:00Z'
join_at: null
joined_at: null
ended_at: null
updated_at: '2026-07-30T12:00:00Z'
webhook_secret: whsec_example_do_not_use
MeetingSessionEvent:
type: object
additionalProperties: false
required:
- seq
- type
- payload
- occurred_at
properties:
seq:
type: integer
type:
type: string
payload:
type: object
additionalProperties: true
occurred_at:
type: string
format: date-time
MeetingSessionEventListResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/MeetingSessionEvent'
MeetingSessionListResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/MeetingSession'
MeetingSessionRecordingMediaDeletionResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- meeting_session_id
- provider
- scope
- deletion_status
properties:
meeting_session_id:
type: string
description: The account-scoped Meeting Session identifier.
provider:
type: string
const: telnyx
scope:
type: string
const: provider_recording_media
deletion_status:
type: string
enum:
- requested
- already_in_progress
example:
data:
meeting_session_id: mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890
provider: telnyx
scope: provider_recording_media
deletion_status: requested
MeetingSessionResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
$ref: '#/components/schemas/MeetingSession'
MemoryListResponse:
properties:
data:
items:
$ref: '#/components/schemas/ListedMemory'
type: array
title: Data
meta:
$ref: '#/components/schemas/PageMeta'
type: object
required:
- data
- meta
title: MemoryListResponse
MemoryResponse:
properties:
data:
$ref: '#/components/schemas/TracedMemory'
type: object
required:
- data
title: MemoryResponse
MessageDetailRecord:
type: object
properties:
uuid:
type: string
description: Unique identifier of the message
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
user_id:
type: string
description: Identifier of the Telnyx account who owns the message
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
completed_at:
type: string
description: Message completion time
format: date-time
example: '2020-07-01T00:00:00Z'
created_at:
type: string
description: Message creation time
format: date-time
example: '2020-07-01T00:00:00Z'
updated_at:
type: string
description: Message updated time
format: date-time
example: '2020-07-01T00:00:00Z'
sent_at:
type: string
description: Time when the message was sent
format: date-time
example: '2020-07-01T00:00:00Z'
carrier:
type: string
description: Country-specific carrier used to send or receive the message
example: T-Mobile USA
carrier_fee:
type: string
description: Fee charged by certain carriers in order to deliver certain message types. Telnyx passes this fee on
to the customer according to our pricing table
example: '0.003'
cld:
type: string
description: The recipient of the message (to parameter in the Messaging API)
example: '+1555123456'
cli:
type: string
description: The sender of the message (from parameter in the Messaging API). For Alphanumeric ID messages, this
is the sender ID value
example: '+1555123456'
country_code:
type: string
description: Two-letter representation of the country of the cld property using the ISO 3166-1 alpha-2 format
example: US
delivery_status:
type: string
description: Final webhook delivery status
example: 'success: webhook succeeded'
delivery_status_failover_url:
type: string
description: Failover customer-provided URL which Telnyx posts delivery status webhooks to
example: https://api.example.com/sms/telnyx/inbound
delivery_status_webhook_url:
type: string
description: Primary customer-provided URL which Telnyx posts delivery status webhooks to
example: https://api.example.com/sms/telnyx/inbound
direction:
type: string
description: Logical direction of the message from the Telnyx customer's perspective. It's inbound when the Telnyx
customer receives the message, or outbound otherwise
example: outbound
enum:
- inbound
- outbound
fteu:
type: boolean
description: Indicates whether this is a Free-To-End-User (FTEU) short code message
example: false
mcc:
type: string
description: Mobile country code. Only available for certain products, such as Global Outbound-Only from Alphanumeric
Sender ID
example: '204'
mnc:
type: string
description: Mobile network code. Only available for certain products, such as Global Outbound-Only from Alphanumeric
Sender ID
example: '01'
message_type:
type: string
description: 'Describes the Messaging service used to send the message. Available services are: Short Message Service
(SMS), Multimedia Messaging Service (MMS), and Rich Communication Services (RCS)'
example: SMS
enum:
- SMS
- MMS
- RCS
on_net:
type: boolean
description: Indicates whether both sender and recipient numbers are Telnyx-managed
example: true
profile_id:
type: string
description: Unique identifier of the Messaging Profile used to send or receive the message
example: 30ef55db-c4a2-4c4a-9804-a68077973d07
profile_name:
type: string
description: Name of the Messaging Profile used to send or receive the message
example: My Messaging Profile
source_country_code:
type: string
description: Two-letter representation of the country of the cli property using the ISO 3166-1 alpha-2 format
example: US
status:
type: string
description: Final status of the message after the delivery attempt
example: delivered
enum:
- gw_timeout
- delivered
- dlr_unconfirmed
- dlr_timeout
- received
- gw_reject
- failed
tags:
type: string
description: Comma-separated tags assigned to the Telnyx number associated with the message
example: tag1,tag2,tag3
rate:
type: string
description: Currency amount per billing unit used to calculate the Telnyx billing cost
example: '0.003'
currency:
type: string
description: Telnyx account currency used to describe monetary values, including billing cost
example: USD
cost:
type: string
description: Amount, in the user currency, for the Telnyx billing cost
example: '0.003'
errors:
type: array
description: Telnyx API error codes returned by the Telnyx gateway
items:
type: string
example: '40001'
parts:
type: integer
description: Number of message parts. The message is broken down in multiple parts when its length surpasses the
limit of 160 characters
example: 2
record_type:
type: string
description: Identifies the record schema
example: message_detail_record
default: message_detail_record
required:
- record_type
MessageEvent:
type: object
description: An event on the per-message events endpoint. The legacy event_type and additive canonical_event_type are
email.-prefixed. The deprecated type preserves the bare stored event name for compatibility.
properties:
type:
allOf:
- $ref: '#/components/schemas/EmailEventType'
deprecated: true
description: Deprecated name field retained for compatibility. Its value is the bare stored event name, never email.-prefixed.
Use event_type for the legacy rendering or canonical_event_type for the canonical name.
event_type:
type: string
pattern: ^email\.
example: email.delivered
description: Legacy customer-visible event name, prefixed with `email.`. Gateway rejections render `email.failed`;
MTA expirations render `email.bounced`. Webhook subscription allowlists match the legacy name.
canonical_event_type:
type: string
pattern: ^email\.
example: email.delivered
description: Additive canonical outcome name, prefixed with `email.`. Gateway rejection is `email.gw_reject`, ambiguous
injection timeout is `email.injection_timeout`, and MTA expiration is `email.expired`. Unchanged outcomes retain
their names. Existing stored rows are translated only when recorded payload evidence proves the outcome; a legacy
failed row is not guessed or sharpened.
occurred_at:
type: string
format: date-time
payload:
type: object
additionalProperties: true
required:
- type
- event_type
- canonical_event_type
- occurred_at
MessageEventListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MessageEvent'
meta:
$ref: '#/components/schemas/email_PaginationMeta'
required:
- data
- meta
MessageMetadata:
description: Metadata to add to the message
type: object
MessageTemplateResponseDataWrapper:
title: MessageTemplateResponseDataWrapper
type: object
properties:
data:
$ref: '#/components/schemas/VerifyProfileMessageTemplateResponse'
MessagingFeatureSet:
type:
- object
- 'null'
required:
- domestic_two_way
- international_inbound
- international_outbound
description: 'The set of features available for a specific messaging use case (SMS or MMS). Features
can vary depending on the characteristics the phone number, as well as its current
product configuration.
'
properties:
domestic_two_way:
type: boolean
description: Send messages to and receive messages from numbers in the same country.
international_inbound:
type: boolean
description: Receive messages from numbers in other countries.
international_outbound:
type: boolean
description: Send messages to numbers in other countries.
example:
domestic_two_way: true
international_inbound: false
international_outbound: true
MessagingHostedNumberOrder:
type: object
example:
id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
record_type: messaging_hosted_number_order
messaging_profile_id: dc8f39ac-953d-4520-b93b-786ae87db0da
status: pending
phone_numbers:
- record_type: messaging_hosted_number
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
phone_number: '+18665550001'
status: pending
- record_type: messaging_hosted_number
id: 464bd54e-a328-4b11-a131-28e6793cb6f2
phone_number: '+18665550002'
status: pending
properties:
record_type:
type: string
example: messaging_hosted_number_order
description: Identifies the type of the resource.
readOnly: true
id:
type: string
format: uuid
description: Resource unique identifier.
readOnly: true
messaging_profile_id:
type:
- string
- 'null'
description: Automatically associate the number with this messaging profile ID when the order is complete.
status:
type: string
enum:
- carrier_rejected
- compliance_review_failed
- deleted
- failed
- incomplete_documentation
- incorrect_billing_information
- ineligible_carrier
- loa_file_invalid
- loa_file_successful
- pending
- provisioning
- successful
phone_numbers:
type: array
items:
$ref: '#/components/schemas/HostedNumber'
MessagingInboundMessage:
type: object
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Identifies the type of resource.
event_type:
type: string
example: message.received
enum:
- message.received
description: The type of event being delivered.
occurred_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
payload:
$ref: '#/components/schemas/MessagingInboundMessagePayload'
example:
record_type: event
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
event_type: message.received
occurred_at: '2019-01-23T18:10:02.574Z'
payload:
record_type: message
direction: inbound
id: 7ee4241c-f127-47e5-9c34-3aac291f8058
type: SMS
messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18665550001'
carrier: T-MOBILE USA, INC.
line_type: Wireless
to:
- phone_number: '+18445550001'
status: delivered
carrier: TELNYX LLC
line_type: VoIP
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
MessagingInboundMessageEvent:
type: object
properties:
data:
$ref: '#/components/schemas/MessagingInboundMessage'
MessagingInboundMessagePayload:
properties:
autoresponse_type:
type: string
description: Automatic response type triggered by an inbound opt-in, opt-out, or help keyword. Examples include
START, STOP, and HELP.
example: STOP
record_type:
type: string
example: message
enum:
- message
description: Identifies the type of the resource.
direction:
type: string
example: inbound
enum:
- inbound
description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from
you.
id:
type: string
format: uuid
description: Identifies the type of resource.
type:
type: string
enum:
- SMS
- MMS
- WHATSAPP
- RCS
description: The messaging channel used for the message.
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
organization_id:
type: string
description: Unique identifier for a messaging profile.
to:
description: Receiving address. SMS, MMS and RCS webhooks use an array of recipients. RCS recipients are identified
by agent_id and agent_name. WhatsApp webhooks use one E.164 phone number.
oneOf:
- type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
enum:
- queued
- sending
- sent
- delivered
- sending_failed
- delivery_failed
- delivery_unconfirmed
- webhook_delivered
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
agent_id:
type: string
description: RCS agent identifier.
agent_name:
type: string
description: RCS agent name.
- type: string
description: WhatsApp receiving address in E.164 format.
x-format: address
cc:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
enum:
- queued
- sending
- sent
- delivered
- sending_failed
- delivery_failed
- delivery_unconfirmed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
status:
type: string
enum:
- received
- delivered
- webhook_delivered
carrier:
type: string
description: The carrier of the sender.
line_type:
type: string
description: The line-type of the sender.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
- long_code
body:
type: object
description: Message body for RCS and WhatsApp. RCS messages contain text, user_file, location, or suggestion_response.
For WhatsApp edits and revocations, inspect type and the corresponding edit or revoke object.
properties:
from:
type: string
description: WhatsApp sender in E.164 format. Empty when the user hides their phone number; `from_user_id` then
identifies the sender.
x-format: address
from_user_id:
type: string
description: Business-scoped user ID (BSUID) of the WhatsApp sender when Meta provides one, for example `US.13491208655302741918`.
When `from` is empty, pass this value as `to` to reply.
id:
type: string
description: Telnyx identifier for this webhook message.
foreign_id:
type: string
description: Meta WhatsApp message identifier for this webhook event.
timestamp:
type: string
description: Unix timestamp supplied by Meta.
type:
type: string
description: WhatsApp message body type. Edit and revoke events use `edit` and `revoke`, respectively.
examples:
- edit
- revoke
edit:
type: object
description: Details for an edited WhatsApp message.
properties:
original_message_id:
type: string
description: Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat
this value as opaque.
message:
type: object
description: Replacement WhatsApp message content. Its shape depends on the message type.
additionalProperties: true
required:
- original_message_id
- message
revoke:
type: object
description: Details for a revoked WhatsApp message.
properties:
original_message_id:
type: string
description: Telnyx message ID when a mapping exists, otherwise the original Meta WhatsApp message ID. Treat
this value as opaque.
required:
- original_message_id
text:
description: RCS text string or WhatsApp text object.
oneOf:
- type: string
- type: object
properties:
body:
type: string
additionalProperties: true
user_file:
type: object
description: RCS file attachment and optional thumbnail.
properties:
payload:
type: object
properties:
file_name:
type: string
file_size_bytes:
type: integer
file_uri:
type: string
mime_type:
type: string
thumbnail:
type: object
properties:
file_name:
type: string
file_size_bytes:
type: integer
file_uri:
type: string
mime_type:
type: string
location:
type: object
description: Location shared in an RCS message.
properties:
latitude:
type: number
longitude:
type: number
suggestion_response:
type: object
description: Selected RCS suggestion.
properties:
postback_data:
type: string
text:
type: string
additionalProperties: true
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
num_chars:
type: integer
description: The number of characters in the message text
subject:
type:
- string
- 'null'
description: Message subject.
media:
type: array
items:
type: object
properties:
url:
type: string
format: url
description: The url of the media requested to be sent.
content_type:
type: string
description: The MIME type of the requested media.
x-format: mime-type
size:
type: integer
description: The size of the requested media.
hash_sha256:
type: string
minLength: 32
maxLength: 32
description: The SHA256 hash of the requested media.
webhook_url:
type:
- string
- 'null'
format: url
description: The URL where webhooks related to this message will be sent.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
encoding:
type: string
description: Encoding scheme used for the message body.
parts:
type: integer
minimum: 1
maximum: 10
description: Number of parts into which the message's body must be split.
tags:
type: array
description: Tags associated with the resource.
items:
type: string
cost:
type:
- object
- 'null'
properties:
amount:
type:
- string
- 'null'
description: The amount deducted from your account.
x-format: decimal
currency:
type:
- string
- 'null'
description: The ISO 4217 currency identifier.
x-format: iso4217
cost_breakdown:
type:
- object
- 'null'
properties:
carrier_fee:
type: object
properties:
amount:
type: string
description: The carrier fee amount.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
rate:
type: object
properties:
amount:
type: string
description: The rate amount applied.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
description: Detailed breakdown of the message cost components.
tcr_campaign_id:
type:
- string
- 'null'
description: The Campaign Registry (TCR) campaign ID associated with the message.
tcr_campaign_billable:
type: boolean
description: Indicates whether the TCR campaign is billable.
tcr_campaign_registered:
type:
- string
- 'null'
description: The registration status of the TCR campaign.
example: REGISTERED
received_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
sent_at:
type:
- string
- 'null'
format: date-time
description: Not used for inbound messages.
completed_at:
type:
- string
- 'null'
format: date-time
description: Not used for inbound messages.
valid_until:
type:
- string
- 'null'
description: Not used for inbound messages.
format: date-time
errors:
type: array
description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
items:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
example:
record_type: message
direction: inbound
id: 7ee4241c-f127-47e5-9c34-3aac291f8058
type: SMS
messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18665550001'
status: delivered
carrier: T-MOBILE USA, INC.
line_type: Wireless
to:
- phone_number: '+18445550001'
status: delivered
carrier: TELNYX LLC
line_type: VoIP
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
MessagingMetricsTimeFrame:
type: string
title: Messaging Metrics Time Frame
description: The time frame for metrics aggregation.
enum:
- 1h
- 3h
- 24h
- 3d
- 7d
- 30d
default: 24h
MessagingOutboundMessage:
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Identifies the type of resource.
event_type:
type: string
example: message.sent
enum:
- message.sent
- message.finalized
- message.read
description: The type of event being delivered.
occurred_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
payload:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
example:
record_type: event
id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
event_type: message.sent
occurred_at: '2019-01-23T18:10:02.574Z'
payload:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: MMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: queued
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media:
- url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png
content_type: null
sha256: null
size: null
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
MessagingOutboundMessageEvent:
type: object
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessage'
meta:
type: object
properties:
attempt:
type: integer
example: 1
description: Number of attempts to deliver the webhook event.
delivered_to:
type: string
format: url
example: https://www.example.com/hooks
description: The webhook URL the event was delivered to.
MessagingOutboundMessagePayload:
type: object
properties:
record_type:
type: string
example: message
enum:
- message
description: Identifies the type of the resource.
direction:
type: string
example: outbound
enum:
- outbound
description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from
you.
id:
type: string
format: uuid
description: Identifies the type of resource.
type:
type: string
enum:
- SMS
- MMS
- RCS
- WHATSAPP
description: The type of message.
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
organization_id:
type: string
format: uuid
description: The id of the organization the messaging profile belongs to.
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
agent_id:
type: string
description: RCS agent identifier.
agent_name:
type: string
description: RCS agent name.
to:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
description: The delivery status of the message.
enum:
- queued
- sending
- sent
- expired
- sending_failed
- delivery_unconfirmed
- delivered
- delivery_failed
- read
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
cc:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
enum:
- queued
- sending
- sent
- delivered
- sending_failed
- delivery_failed
- delivery_unconfirmed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
num_chars:
type: integer
description: The number of characters in the message text
subject:
type:
- string
- 'null'
description: Subject of multimedia message
media:
type: array
items:
type: object
properties:
url:
type: string
format: url
description: The url of the media requested to be sent.
content_type:
type:
- string
- 'null'
x-format: mime-type
description: The MIME type of the requested media.
sha256:
type:
- string
- 'null'
description: The SHA256 hash of the requested media.
size:
type:
- integer
- 'null'
description: The size of the requested media.
webhook_url:
type:
- string
- 'null'
format: url
description: The URL where webhooks related to this message will be sent.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
encoding:
type: string
description: Encoding scheme used for the message body.
parts:
type: integer
minimum: 1
maximum: 10
description: Number of parts into which the message's body must be split.
tags:
type: array
description: Tags associated with the resource.
items:
type: string
cost:
type:
- object
- 'null'
properties:
amount:
type: string
description: The amount deducted from your account.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
cost_breakdown:
type:
- object
- 'null'
properties:
carrier_fee:
type: object
properties:
amount:
type: string
description: The carrier fee amount.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
rate:
type: object
properties:
amount:
type: string
description: The rate amount applied.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
description: Detailed breakdown of the message cost components.
tcr_campaign_id:
type:
- string
- 'null'
description: The Campaign Registry (TCR) campaign ID associated with the message.
tcr_campaign_billable:
type: boolean
description: Indicates whether the TCR campaign is billable.
tcr_campaign_registered:
type:
- string
- 'null'
description: The registration status of the TCR campaign.
example: REGISTERED
received_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
sent_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was sent.
completed_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was finalized.
valid_until:
type:
- string
- 'null'
description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'.
Once the message moves out of the queue, this field will be nulled
format: date-time
errors:
type: array
description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
items:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
smart_encoding_applied:
type: boolean
description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters
were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text
is preserved in webhooks.
wait_seconds:
type:
- number
- 'null'
format: float
description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the
maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.
example: 0.5
body:
type: object
description: Message body for RCS and WhatsApp. RCS text messages use the text property. WhatsApp messages contain
the `whatsapp_message` object from the send request.
properties:
text:
type: string
description: RCS text message.
additionalProperties: true
template_id:
type: string
description: Telnyx ID of the WhatsApp template used by the message, when known.
template_name:
type: string
description: Name of the WhatsApp template used by the message. Present for WhatsApp template messages.
example:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: MMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: queued
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media:
- url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png
content_type: null
sha256: null
size: null
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
wait_seconds: 0.5
MessagingProfile:
type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
enum:
- messaging_profile
readOnly: true
id:
description: Identifies the type of resource.
type: string
format: uuid
readOnly: true
mms_fall_back_to_sms:
description: enables SMS fallback for MMS messages.
type: boolean
default: false
mms_transcoding:
description: enables automated resizing of MMS media.
type: boolean
default: false
name:
description: A user friendly name for the messaging profile.
type: string
enabled:
description: Specifies whether the messaging profile is enabled or not.
type: boolean
webhook_url:
description: The URL where webhooks related to this messaging profile will be sent.
type:
- string
- 'null'
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary
URL fails.
type:
- string
- 'null'
format: url
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.
type: string
enum:
- '1'
- '2'
- '2010-04-01'
health_webhook_url:
description: 'DEPRECATED: health check url service checking'
type:
- string
- 'null'
format: url
whitelisted_destinations:
description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid
ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed.
type: array
items:
description: ISO 3166-1 alpha-2 country code.
type: string
pattern: ^[A-Z]{2}$
created_at:
description: ISO 8601 formatted date indicating when the resource was created.
type: string
format: date-time
readOnly: true
updated_at:
description: ISO 8601 formatted date indicating when the resource was updated.
type: string
format: date-time
readOnly: true
v1_secret:
description: Secret used to authenticate with v1 endpoints.
type: string
number_pool_settings:
$ref: '#/components/schemas/NumberPoolSettings'
url_shortener_settings:
$ref: '#/components/schemas/UrlShortenerSettings'
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
daily_spend_limit:
description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.
type: string
pattern: ^[0-9]+(?:\.[0-9]+)?$
daily_spend_limit_enabled:
description: Whether to enforce the value configured by `daily_spend_limit`.
type: boolean
redaction_enabled:
description: Indicates whether message content redaction is enabled for this profile.
type: boolean
default: false
redaction_level:
description: Determines how much information is redacted in messages for privacy or compliance purposes.
type: integer
default: 2
mobile_only:
description: Send messages only to mobile phone numbers.
type: boolean
default: false
smart_encoding:
description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically
selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and
minimize costs.
type: boolean
default: false
organization_id:
type: string
description: The organization that owns this messaging profile.
ai_assistant_id:
type:
- string
- 'null'
description: The AI assistant ID associated with this messaging profile.
example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000
resource_group_id:
type:
- string
- 'null'
description: The resource group ID associated with this messaging profile.
example:
record_type: messaging_profile
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name: Profile for Messages
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
enabled: true
webhook_api_version: '2'
whitelisted_destinations:
- US
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
number_pool_settings:
toll_free_weight: 10
long_code_weight: 2
skip_unhealthy: false
sticky_sender: true
geomatch: false
url_shortener_settings:
domain: example.ex
prefix: cmpny
replace_blacklist_only: true
send_webhooks: false
v1_secret: rP1VamejkU2v0qIUxntqLW2c
health_webhook_url: null
mms_fall_back_to_sms: false
mms_transcoding: false
daily_spend_limit: '100.00'
daily_spend_limit_enabled: false
redaction_enabled: false
redaction_level: 2
mobile_only: false
MessagingProfileFeatures:
type:
- object
- 'null'
description: Telnyx product features the messaging customer can enable on the messaging profile. Keys map to individual
feature flags; unknown keys are accepted and preserved for forward compatibility with rolling deployments.
additionalProperties: true
properties:
ai_opt_out_detection_enabled:
type: boolean
description: Enables AI detection of inbound opt-out messages that do not follow the standard STOP/UNSTOP/HELP opt-out
keyword pattern. When enabled, the messaging platform applies an AI model to identify non-standard opt-out requests
(e.g. natural-language phrases) and treats them as opt-outs.
example:
ai_opt_out_detection_enabled: true
MessagingSettings:
properties:
default_messaging_profile_id:
type: string
description: Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically
on assistant creation.
delivery_status_webhook_url:
type: string
description: The URL where webhooks related to delivery statused for assistant messages will be sent.
conversation_inactivity_minutes:
type: integer
minimum: 1
maximum: 10000000
description: If more than this many minutes have passed since the last message, the assistant will start a new conversation
instead of continuing the existing one.
type: object
MessagingUrlDomain:
type: object
properties:
record_type:
type: string
id:
type: string
url_domain:
type: string
use_case:
type: string
example:
record_type: messaging_url_domain
id: 464bd54e-a328-4b11-a131-28e6793cb6f2
url_domain: http://example.com
use_case: test
Meta:
properties:
total_pages:
type: integer
total_results:
type: integer
page_number:
type: integer
page_size:
type: integer
type: object
required:
- total_pages
- total_results
- page_number
- page_size
title: Meta
MetaResponse:
type: object
properties:
url:
type: string
description: This should likely be a URL to the relevant documentation
example: https://developers.telnyx.com/docs/overview/errors/10001
Metadata:
type: object
title: Metadata
properties:
total_pages:
type: number
description: Total number of pages based on pagination settings
example: 13
format: integer
total_results:
type: number
description: Total number of results
example: 13
format: integer
page_number:
type: number
description: Current Page based on pagination settings (included when defaults are used.)
example: 3
format: integer
page_size:
type: number
description: Number of results to return per page based on pagination settings (included when defaults are used.)
example: 1
format: integer
MetadataFieldMapping:
type: object
required:
- local_field
- parent_field
properties:
local_field:
type: string
parent_field:
type: string
MetadataInfo:
type: object
required:
- total_record_types
- last_updated
properties:
total_record_types:
type: integer
last_updated:
type: string
format: date-time
MetadataOverviewResponse:
type: object
required:
- record_types
- query_parameters
- meta
properties:
record_types:
type: array
items:
$ref: '#/components/schemas/RecordTypeInfo'
query_parameters:
type: object
additionalProperties:
$ref: '#/components/schemas/QueryParameterInfo'
description: Map of supported query parameter names to their definitions.
meta:
$ref: '#/components/schemas/MetadataInfo'
MigrationParams:
type: object
properties:
id:
type: string
description: Unique identifier for the data migration.
readOnly: true
source_id:
type: string
description: ID of the Migration Source from which to migrate data.
target_bucket_name:
type: string
description: Bucket name to migrate the data into. Will default to the same name as the `source_bucket_name`.
target_region:
type: string
description: Telnyx Cloud Storage region to migrate the data to.
refresh:
type: boolean
description: If true, will continue to poll the source bucket to ensure new data is continually migrated over.
last_copy:
type: string
format: date-time
description: Time when data migration was last copied from the source.
readOnly: true
example: '2020-01-01T00:00:00Z'
status:
type: string
enum:
- pending
- checking
- migrating
- complete
- error
- stopped
readOnly: true
description: Status of the migration.
bytes_to_migrate:
type: integer
readOnly: true
description: Total amount of data found in source bucket to migrate.
bytes_migrated:
type: integer
readOnly: true
description: Total amount of data that has been succesfully migrated.
speed:
type: integer
readOnly: true
description: Current speed of the migration.
eta:
type: string
format: date-time
readOnly: true
description: Estimated time the migration will complete.
example: '2020-01-01T00:00:00Z'
created_at:
type: string
format: date-time
description: Time when data migration was created
readOnly: true
example: '2020-01-01T00:00:00Z'
required:
- source_id
- target_bucket_name
- target_region
MigrationSourceCoverageParams:
type: object
properties:
provider:
type: string
enum:
- aws
description: Cloud provider from which to migrate data.
source_region:
type: string
description: Provider region from which to migrate data.
MigrationSourceParams:
type: object
properties:
id:
type: string
description: Unique identifier for the data migration source.
readOnly: true
provider:
type: string
enum:
- aws
- telnyx
description: Cloud provider from which to migrate data. Use 'telnyx' if you want to migrate data from one Telnyx
bucket to another.
source_region:
type: string
description: For intra-Telnyx buckets migration, specify the source bucket region in this field.
provider_auth:
type: object
properties:
access_key:
type: string
description: AWS Access Key. For Telnyx-to-Telnyx migrations, use your Telnyx API key here.
secret_access_key:
type: string
description: AWS Secret Access Key. For Telnyx-to-Telnyx migrations, use your Telnyx API key here as well.
bucket_name:
type: string
description: Bucket name to migrate the data from.
required:
- provider
- provider_auth
- bucket_name
MinimaxClone:
type: object
description: Upload-based voice clone using the Minimax provider.
required:
- audio_file
- name
- language
- gender
- provider
properties:
audio_file:
type: string
format: binary
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality,
provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 20MB.'
name:
type: string
maxLength: 255
description: Name for the voice clone.
language:
type: string
pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$
description: ISO 639-1 language code from the Minimax language set.
gender:
type: string
enum:
- male
- female
- neutral
description: Gender of the voice clone.
ref_text:
type: string
description: Optional transcript of the audio file. Providing this improves clone quality.
label:
type: string
description: Optional custom label describing the voice style.
model_id:
type:
- string
- 'null'
enum:
- speech-2.8-turbo
- null
description: TTS model identifier. Nullable — defaults to speech-2.8-turbo.
provider:
type: string
enum:
- minimax
- Minimax
description: Voice synthesis provider. Must be `minimax`.
MinimaxDesignClone:
type: object
description: Create a voice clone from a voice design using the Minimax provider.
required:
- name
- voice_design_id
- language
- gender
- provider
properties:
name:
type: string
minLength: 1
maxLength: 255
description: Name for the voice clone.
voice_design_id:
type: string
format: uuid
description: UUID of the source voice design to clone.
language:
type: string
description: ISO 639-1 language code for the clone. Supports the Minimax language set.
gender:
type: string
enum:
- male
- female
- neutral
description: Gender of the voice clone.
provider:
type: string
enum:
- minimax
- Minimax
description: Voice synthesis provider. Must be `minimax`.
example:
name: clone-narrator
voice_design_id: 550e8400-e29b-41d4-a716-446655440000
language: en
gender: male
provider: minimax
MinimaxProviderParams:
type: object
description: Minimax provider-specific parameters.
properties:
speed:
type: number
format: float
description: Speech speed multiplier.
vol:
type: number
format: float
description: Volume level.
pitch:
type: integer
description: Pitch adjustment.
response_format:
type: string
description: Audio output format.
language_boost:
type: string
description: Language code to boost pronunciation for.
MinimaxVoiceSettings:
type: object
title: Minimax Voice Settings
properties:
type:
type: string
enum:
- minimax
description: Voice settings provider type
speed:
description: Speech speed multiplier. Default is 1.0.
type: number
format: float
example: 1.0
default: 1.0
vol:
description: Speech volume multiplier. Default is 1.0.
type: number
format: float
example: 1.0
default: 1.0
pitch:
description: Voice pitch adjustment. Default is 0.
type: integer
example: 0
default: 0
language_boost:
type:
- string
- 'null'
description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null
(no boost). Set to 'auto' for automatic language detection.
enum:
- null
- auto
- Chinese
- Chinese,Yue
- English
- Arabic
- Russian
- Spanish
- French
- Portuguese
- German
- Turkish
- Dutch
- Ukrainian
- Vietnamese
- Indonesian
- Japanese
- Italian
- Korean
- Thai
- Polish
- Romanian
- Greek
- Czech
- Finnish
- Hindi
- Bulgarian
- Danish
- Hebrew
- Malay
- Persian
- Slovak
- Swedish
- Croatian
- Filipino
- Hungarian
- Norwegian
- Slovenian
- Catalan
- Nynorsk
- Tamil
- Afrikaans
default: null
required:
- type
MissionData:
properties:
mission_id:
type: string
format: uuid
title: Mission Id
name:
type: string
title: Name
description:
title: Description
type: string
model:
title: Model
type: string
instructions:
title: Instructions
type: string
execution_mode:
$ref: '#/components/schemas/ExecutionMode'
metadata:
title: Metadata
additionalProperties: true
type: object
created_at:
type: string
format: date-time
title: Created At
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- mission_id
- name
- execution_mode
- created_at
- updated_at
title: MissionData
MissionResponse:
properties:
data:
$ref: '#/components/schemas/MissionData'
type: object
required:
- data
title: MissionResponse
MissionRunData:
properties:
run_id:
type: string
format: uuid
title: Run Id
mission_id:
type: string
format: uuid
title: Mission Id
status:
$ref: '#/components/schemas/RunStatus'
input:
title: Input
additionalProperties: true
type: object
started_at:
type: string
format: date-time
title: Started At
finished_at:
title: Finished At
type: string
format: date-time
result_summary:
title: Result Summary
type: string
result_payload:
title: Result Payload
additionalProperties: true
type: object
error:
title: Error
type: string
metadata:
title: Metadata
additionalProperties: true
type: object
updated_at:
type: string
format: date-time
title: Updated At
type: object
required:
- run_id
- mission_id
- status
- started_at
- updated_at
title: MissionRunData
MissionRunResponse:
properties:
data:
$ref: '#/components/schemas/MissionRunData'
type: object
required:
- data
title: MissionRunResponse
MissionRunsListResponse:
properties:
data:
items:
$ref: '#/components/schemas/MissionRunData'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: MissionRunsListResponse
MissionsListResponse:
properties:
data:
items:
$ref: '#/components/schemas/MissionData'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: MissionsListResponse
MnoMetadata:
title: MnoMetadata
type: object
additionalProperties: true
properties:
'10999':
$ref: '#/components/schemas/MnoMetadataItem'
MnoMetadataItem:
title: MnoMetadataItem
type: object
required:
- qualify
- mno
- noEmbeddedLink
- reqSubscriberHelp
- reqSubscriberOptout
- mnoReview
- noEmbeddedPhone
- mnoSupport
- reqSubscriberOptin
- minMsgSamples
properties:
qualify:
type: boolean
mno:
type: string
noEmbeddedLink:
type: boolean
reqSubscriberHelp:
type: boolean
reqSubscriberOptout:
type: boolean
mnoReview:
type: boolean
noEmbeddedPhone:
type: boolean
mnoSupport:
type: boolean
reqSubscriberOptin:
type: boolean
minMsgSamples:
type: integer
example: 1
MobileCountryCode:
type: string
description: Mobile Country Code.
example: '311'
MobileNetworkOperator:
type: object
title: MobileNetworkOperator
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: mobile_network_operator
name:
description: The network operator name.
type: string
example: AT&T Mobility (USACG)
tadig:
type: string
description: TADIG stands for Transferred Account Data Interchange Group. The TADIG code is a unique identifier
for network operators in GSM mobile networks.
example: USACG
country_code:
type: string
description: The mobile operator two-character (ISO 3166-1 alpha-2) origin country code.
example: US
mcc:
type: string
description: 'MCC stands for Mobile Country Code. It''s a three decimal digit that identifies a country.
This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier
known as PLMN (Public Land Mobile Network) code.'
example: '310'
mnc:
type: string
description: "MNC stands for Mobile Network Code. It's a two to three decimal digits that identify a network. \n\
\ This code is commonly seen joined with a Mobile Country Code (MCC) in a tuple that allows identifying a carrier\
\ known as PLMN (Public Land Mobile Network) code."
example: '410'
network_preferences_enabled:
type: boolean
description: Indicate whether the mobile network operator can be set as preferred in the Network Preferences API.
readOnly: true
example: true
MobileNetworkOperatorPreferencesResponse:
description: ''
type: object
properties:
mobile_network_operator_id:
type: string
format: uuid
description: The mobile network operator resource identification UUID.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
mobile_network_operator_name:
type: string
description: The mobile network operator resource name.
example: AT&T Mobility (USACG)
priority:
type: integer
description: It determines what is the priority of a specific network operator that should be assumed by a SIM card
when connecting to a network. The highest priority is 0, the second highest is 1 and so on.
example: 0
MobileNetworkOperatorsPreferencesResponse:
type: array
description: A list of mobile network operators and the priority that should be applied when the SIM is connecting to
the network.
items:
$ref: '#/components/schemas/MobileNetworkOperatorPreferencesResponse'
MobilePhoneNumber:
type: object
properties:
id:
type: string
description: Identifies the resource.
readOnly: true
record_type:
type: string
description: Identifies the type of the resource.
example: mobile_phone_number
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number.
readOnly: true
sim_card_id:
type: string
description: The ID of the SIM card associated with this number.
format: uuid
readOnly: true
status:
type: string
description: The status of the phone number.
readOnly: true
connection_id:
type:
- string
- 'null'
description: The ID of the connection associated with this number.
x-format: int64
connection_name:
type:
- string
- 'null'
description: The name of the connection.
readOnly: true
connection_type:
type:
- string
- 'null'
description: The type of the connection.
readOnly: true
mobile_voice_enabled:
type: boolean
description: Indicates if mobile voice is enabled.
readOnly: true
tags:
type: array
items:
type: string
description: A list of tags associated with the number.
customer_reference:
type:
- string
- 'null'
description: A customer reference string.
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was last updated.
readOnly: true
call_forwarding:
type: object
properties:
call_forwarding_enabled:
type: boolean
forwards_to:
type:
- string
- 'null'
forwarding_type:
type:
- string
- 'null'
enum:
- always
- on-failure
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the number.
readOnly: true
noise_suppression:
type: string
description: The noise suppression setting.
enum:
- inbound
- outbound
- both
- disabled
inbound_call_screening:
type:
- string
- 'null'
description: The inbound call screening setting.
enum:
- disabled
- reject_calls
- flag_calls
caller_id_name_enabled:
type: boolean
description: Indicates if caller ID name is enabled.
call_recording:
type: object
properties:
inbound_call_recording_enabled:
type: boolean
inbound_call_recording_channels:
type: string
enum:
- single
- dual
inbound_call_recording_format:
type: string
enum:
- wav
- mp3
cnam_listing:
type: object
properties:
cnam_listing_enabled:
type: boolean
cnam_listing_details:
type:
- string
- 'null'
outbound:
type: object
properties:
interception_app_id:
type:
- string
- 'null'
description: The ID of the app that will intercept outbound calls.
x-format: int64
interception_app_name:
type:
- string
- 'null'
description: The name of the app that will intercept outbound calls.
readOnly: true
inbound:
type: object
properties:
interception_app_id:
type:
- string
- 'null'
description: The ID of the app that will intercept inbound calls.
x-format: int64
interception_app_name:
type:
- string
- 'null'
description: The name of the app that will intercept inbound calls.
readOnly: true
MobilePhoneNumberUpdate:
type: object
properties:
customer_reference:
type:
- string
- 'null'
connection_id:
type:
- string
- 'null'
noise_suppression:
type: boolean
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
caller_id_name_enabled:
type: boolean
tags:
type: array
items:
type: string
inbound:
type: object
properties:
interception_app_id:
type:
- string
- 'null'
description: The ID of the CallControl or TeXML Application that will intercept inbound calls.
x-format: int64
outbound:
type: object
properties:
interception_app_id:
type:
- string
- 'null'
description: The ID of the CallControl or TeXML Application that will intercept outbound calls.
x-format: int64
call_forwarding:
type: object
properties:
forwards_to:
type:
- string
- 'null'
forwarding_type:
type:
- string
- 'null'
enum:
- always
- on-failure
call_forwarding_enabled:
type: boolean
cnam_listing:
type: object
properties:
cnam_listing_enabled:
type: boolean
cnam_listing_details:
type:
- string
- 'null'
call_recording:
type: object
properties:
inbound_call_recording_enabled:
type: boolean
inbound_call_recording_channels:
type: string
enum:
- single
- dual
inbound_call_recording_format:
type: string
enum:
- wav
- mp3
MobilePhoneNumberWithMessagingSettings:
type: object
example:
record_type: messaging_settings
id: '2126210528794641864'
phone_number: ++13127367407
messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
country_code: US
type: longcode
traffic_type: P2P
messaging_product: P2P
features:
sms:
domestic_two_way: true
international_inbound: true
international_outbound: true
properties:
record_type:
type: string
example: messaging_settings
enum:
- messaging_phone_number
- messaging_settings
description: Identifies the type of the resource.
readOnly: true
id:
type: string
description: Identifies the type of resource.
readOnly: true
phone_number:
type: string
description: +E.164 formatted phone number.
readOnly: true
x-format: e164
messaging_profile_id:
type:
- string
- 'null'
description: Unique identifier for a messaging profile.
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
country_code:
type: string
description: ISO 3166-1 alpha-2 country code.
pattern: ^[A-Z]{2}$
example: US
readOnly: true
type:
type: string
description: The type of the phone number
enum:
- longcode
readOnly: true
traffic_type:
type: string
description: The messaging traffic or use case for which the number is currently configured.
example: P2P
readOnly: true
messaging_product:
type: string
description: The messaging product that the number is registered to use
example: P2P
features:
type: object
readOnly: true
properties:
sms:
$ref: '#/components/schemas/MessagingFeatureSet'
organization_id:
type: string
description: The organization that owns this phone number.
tags:
type: array
items:
type: string
description: Tags associated with this phone number.
MobileVoiceConnection:
type: object
properties:
id:
type: string
description: Identifies the resource.
readOnly: true
record_type:
type: string
description: Identifies the type of the resource.
example: mobile_voice_connection
enum:
- mobile_voice_connection
readOnly: true
active:
type: boolean
description: Indicates if the connection is active.
connection_name:
type: string
description: The name of the connection.
tags:
type: array
items:
type: string
description: A list of tags associated with the connection.
webhook_event_url:
type:
- string
- 'null'
description: The URL where webhooks are sent.
webhook_event_failover_url:
type:
- string
- 'null'
description: The failover URL where webhooks are sent.
webhook_api_version:
type:
- string
- 'null'
description: The API version for webhooks.
enum:
- '1'
- '2'
webhook_timeout_secs:
type:
- integer
- 'null'
description: The timeout for webhooks in seconds.
outbound:
type: object
properties:
channel_limit:
type:
- integer
- 'null'
outbound_voice_profile_id:
type:
- string
- 'null'
inbound:
type: object
properties:
channel_limit:
type:
- integer
- 'null'
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
MobileVoiceConnectionCreate:
type: object
required: []
properties:
active:
type: boolean
default: true
connection_name:
type: string
default: Telnyx Mobile Voice IMS
webhook_event_url:
type:
- string
- 'null'
webhook_event_failover_url:
type:
- string
- 'null'
webhook_api_version:
type: string
enum:
- '1'
- '2'
default: '2'
webhook_timeout_secs:
type:
- integer
- 'null'
tags:
type: array
items:
type: string
outbound:
type: object
properties:
channel_limit:
type: integer
outbound_voice_profile_id:
type: string
inbound:
type: object
properties:
channel_limit:
type: integer
MobileVoiceConnectionUpdate:
type: object
required: []
properties:
active:
type: boolean
connection_name:
type: string
webhook_event_url:
type:
- string
- 'null'
webhook_event_failover_url:
type:
- string
- 'null'
webhook_api_version:
type: string
enum:
- '1'
- '2'
webhook_timeout_secs:
type: integer
tags:
type: array
items:
type: string
outbound:
type: object
properties:
channel_limit:
type: integer
outbound_voice_profile_id:
type: string
inbound:
type: object
properties:
channel_limit:
type: integer
ModelMetadata:
type: object
title: ModelMetadata
description: Metadata for a model available on Telnyx Inference. Returned by `GET /v2/ai/openai/models` (and the deprecated
`GET /v2/ai/models`). Open-source models live under their Hugging Face organization (e.g. `moonshotai/Kimi-K2.6`,
`zai-org/GLM-5.1-FP8`, `MiniMaxAI/MiniMax-M2.7`); fine-tuned models are owned by the Telnyx organization that trained
them.
required:
- id
- created
- owned_by
- organization
- context_length
- languages
- parameters
- tier
- license
properties:
id:
type: string
title: Id
description: Model identifier. For open-source models, follows the `{organization}/{model_name}` convention from
Hugging Face (e.g. `moonshotai/Kimi-K2.6`).
example: moonshotai/Kimi-K2.6
object:
type: string
title: Object
default: model
description: Object type. Always `model`.
created:
type: string
format: date-time
title: Created
description: Timestamp at which the model was registered on Telnyx Inference (ISO 8601).
base_model:
type:
- string
- 'null'
title: Base Model
description: Base model the fine-tuned model was trained from. Only set for fine-tuned models.
owned_by:
type: string
title: Owned By
description: Owner of the model. `Telnyx` for Telnyx-hosted open-source models, the upstream provider name for proxied
models, or the Telnyx organization id for fine-tuned models.
example: Telnyx
organization:
type: string
title: Organization
description: Organization that originally published the model, matching the prefix of `id` for open-source models.
example: moonshotai
task:
type: string
title: Task
default: text-generation
description: Primary task the model is intended for, e.g. `text-generation`, `audio-text-to-text`, `feature-extraction`
(embeddings).
example: text-generation
context_length:
type: integer
title: Context Length
description: Maximum total tokens (prompt + completion) supported by the model in a single request.
example: 262144
max_completion_tokens:
type:
- integer
- 'null'
title: Max Completion Tokens
description: Model-specific completion-token ceiling. For Chat Completions, this value clamps explicit output limits
and the 8192 default when that default applies. Models excluded from the default leave an omitted or null output
limit unset for the serving engine, even when this metadata declares a ceiling; see `ChatCompletionRequest.max_tokens`
for the hosted default and exclusion lists. This field does not report the effective default. `null` means no
separate completion ceiling is declared; input and output together must still fit `context_length`.
languages:
type: array
title: Languages
items:
type: string
description: ISO language codes the model supports (e.g. `en`, `es`).
parameters:
type: integer
title: Parameters
description: Total parameter count of the model.
example: 1000000000000
parameters_str:
type:
- string
- 'null'
title: Parameters (human readable)
description: Human-readable parameter count, e.g. `1.0T`, `753.9B`, `8B`.
example: 1.0T
tier:
type: string
title: Tier
enum:
- small
- medium
- large
- unlisted
description: Billing tier the model belongs to. Used together with `pricing` to determine cost per 1M tokens.
license:
type: string
title: License
description: License the model is distributed under, e.g. `Apache 2.0`, `MIT`, `Llama 3 Community License`.
is_fine_tunable:
type: boolean
title: Is Fine Tunable
default: false
description: Whether the model can be used as a base for a fine-tuning job via `POST /v2/ai/fine_tuning/jobs`.
recommended_for_assistants:
type: boolean
title: Recommended For Assistants
default: false
description: Whether Telnyx currently recommends this model as the LLM powering a Telnyx AI Assistant.
is_vision_supported:
type: boolean
title: Is Vision Supported
default: false
description: Whether the model accepts image inputs in chat completions (multimodal vision support).
description:
type:
- string
- 'null'
title: Description
description: Short, human-readable summary of what the model is best suited for.
pricing:
type: object
title: Pricing
additionalProperties:
type: string
description: Mapping of token kind to price, as strings to preserve precision. Typical keys are `prompt`, `cached_prompt`,
and `completion`. When pricing is available the block also includes `currency` (ISO 4217 code matching the account's
configured billing currency) and `unit` (the denomination the prices are quoted in, currently always `1M_tokens`
for token-priced models).
example:
prompt: '0.300000'
completion: '1.200000'
cached_prompt: '0.060000'
currency: USD
unit: 1M_tokens
regions:
type: array
title: Regions
items:
type: string
description: Public region names where the model is currently deployed (e.g. `us-central-1`, `eu-central-1`).
example:
- us-central-1
- us-east-1
service_tiers:
type: array
title: Service Tiers
items:
type: string
enum:
- default
- priority
- flex
description: Service tiers supported by this Telnyx-hosted model. Use one of these values as `service_tier` in Chat
Completions or Responses requests. This field is omitted for externally hosted models.
ModelProvenance:
type: object
additionalProperties: false
required:
- model
- provider
properties:
model:
type: string
provider:
type: string
ModelsResponse:
properties:
object:
type: string
title: Object
default: list
data:
items:
$ref: '#/components/schemas/ModelMetadata'
type: array
title: Data
type: object
required:
- data
title: ModelsResponse
Money:
type: number
minimum: 0
maximum: 1000000000
multipleOf: 1.0e-06
description: USD, decimal precision at most 6 places; parse exactly to integer micro-USD, never binary float accounting.
Monochrome:
description: The flag to enable monochrome, true black and white fax results.
type: boolean
default: false
MonthDetail:
type: object
properties:
quantity:
type: integer
description: Number of items
example: 10
mrc:
type: string
description: Monthly recurring charge amount as decimal string
example: '25.50'
otc:
type:
- string
- 'null'
description: One-time charge amount as decimal string
example: '5.00'
required:
- quantity
- mrc
MonthlyChargesBreakdownResponse:
type: object
properties:
data:
$ref: '#/components/schemas/BreakdownData'
required:
- data
MonthlyChargesSummaryResponse:
type: object
properties:
data:
$ref: '#/components/schemas/SummaryAndTotal'
required:
- data
MutateInboxFiltersRequest:
type: object
properties:
type:
type: string
enum:
- allowlist
- blocklist
description: The list to change.
entries:
$ref: '#/components/schemas/InboxFilterEntryList'
required:
- type
- entries
Namespace:
properties:
id:
type: string
title: Id
description: The namespace's unique identifier.
name:
type: string
title: Name
description: The namespace's name, used in the path. `default` exists for every organization.
type: object
required:
- id
- name
title: Namespace
description: An isolated memory store within your organization.
NamespaceCreate:
properties:
name:
type: string
title: Name
description: A name for the new namespace, unique within your organization.
type: object
required:
- name
title: NamespaceCreate
NamespaceListResponse:
properties:
data:
items:
$ref: '#/components/schemas/Namespace'
type: array
title: Data
type: object
required:
- data
title: NamespaceListResponse
NamespaceResponse:
properties:
data:
$ref: '#/components/schemas/Namespace'
type: object
required:
- data
title: NamespaceResponse
NamespaceSettings:
properties:
summary:
$ref: '#/components/schemas/SummarySettings'
description: Settings that shape this namespace's summaries.
type: object
title: NamespaceSettings
description: A namespace's settings, grouped by what they affect.
NamespaceSettingsPatch:
properties:
summary:
anyOf:
- $ref: '#/components/schemas/SummarySettingsPatch'
- type: 'null'
description: Summary settings to change. Omit to change nothing.
type: object
title: NamespaceSettingsPatch
NamespaceSettingsResponse:
properties:
data:
$ref: '#/components/schemas/NamespaceSettings'
type: object
required:
- data
title: NamespaceSettingsResponse
NavigateAction:
type: object
description: Navigate to a URL.
required:
- type
- url
properties:
type:
const: navigate
url:
type: string
format: uri
maxLength: 2048
wait_until:
type: string
enum:
- load
- dom_stable
- none
default: load
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
Network:
allOf:
- $ref: '#/components/schemas/Record'
- type: object
title: Network
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: network
name:
type: string
description: A user specified name for the network.
example: test network
NetworkCoverage:
type: object
title: NetworkCoverage
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: network_coverage
location:
$ref: '#/components/schemas/netapps_Location_17904fcfbc'
available_services:
type: array
description: List of interface types supported in this region.
items:
oneOf:
- $ref: '#/components/schemas/AvailableService'
NetworkCreate:
allOf:
- $ref: '#/components/schemas/Network'
- type: object
title: NetworkCreate
required:
- name
NetworkInterface:
allOf:
- $ref: '#/components/schemas/Record'
- $ref: '#/components/schemas/Interface'
- $ref: '#/components/schemas/RegionOut'
- type: object
title: NetworkInterface
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: network_interface
type:
type: string
description: Identifies the type of the interface.
readOnly: true
example: wireguard_interface
NewBillingGroup:
type: object
properties:
name:
type: string
description: A name for the billing group
example:
name: string
NewLedgerBillingGroupReport:
type: object
properties:
year:
type: integer
description: Year of the ledger billing group report
example: 2019
month:
type: integer
description: Month of the ledger billing group report
example: 10
example:
year: 2019
month: 10
NewParticipantResource:
type: object
title: New participant resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching: false
conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
end_conference_on_exit: false
hold: false
muted: false
status: completed
uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
call_sid:
type: string
description: The identifier of this participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching:
type: boolean
description: Whether the participant is coaching another call.
example: false
coaching_call_sid:
type: string
description: The identifier of the coached participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
end_conference_on_exit:
type: boolean
description: Whether the conference ends when the participant leaves.
example: false
hold:
type: boolean
description: Whether the participant is on hold.
example: false
muted:
type: boolean
description: Whether the participant is muted.
example: false
status:
type: string
description: The status of the participant's call in the conference.
enum:
- connecting
- connected
- completed
example: connected
uri:
type: string
description: The relative URI for this participant.
example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
conference_sid:
type: string
format: uuid
description: The unique identifier for the conference.
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
NodePosition:
description: '2D coordinates for a node, used by authoring UIs to lay out the graph.
Purely a presentation aid. The runtime ignores `position`; it round-trips
through the API so frontends can persist the graph layout customers
arrange in the editor.'
properties:
x:
description: Horizontal coordinate in the authoring canvas.
title: X
type: number
y:
description: Vertical coordinate in the authoring canvas.
title: Y
type: number
required:
- x
- y
title: NodePosition
type: object
NodeTarget:
description: 'Edge target referencing another node within the same flow.
The runtime transitions the active node to `node_id` and continues
processing within the current assistant''s flow.'
properties:
node_id:
description: ID of the node this edge transitions into.
example: n_billing
title: Node Id
type: string
type:
const: node
title: Type
type: string
required:
- type
- node_id
title: NodeTarget
type: object
NoiseSuppressionDirection:
type: string
title: Noise Suppression Direction
description: The direction of the audio stream to be noise suppressed.
enum:
- inbound
- outbound
- both
default: inbound
example: outbound
NoiseSuppressionEngine:
type: string
title: Noise Suppression Engine
description: "The engine to use for noise suppression.\nFor backward compatibility, engines A, B, C, and D are also\
\ supported, but are deprecated:\n A - Denoiser\n B - DeepFilterNet\n C - Krisp\n D - AiCoustics"
enum:
- Denoiser
- DeepFilterNet
- Krisp
- AiCoustics
- aic_l_quail
- aic_l_rook
- aic_s_quail
- aic_s_rook
- quail_voice_focus_s
- quail_voice_focus_xs
default: Denoiser
example: Denoiser
NoiseSuppressionEngineConfig:
type: object
title: Noise Suppression Engine Configuration
description: Configuration parameters for noise suppression engines. Different engines support different parameters.
properties:
attenuation_limit:
type: integer
description: The attenuation limit for noise suppression (0-100). Only applicable for DeepFilterNet.
minimum: 0
maximum: 100
default: 100
example: 100
mode:
type: string
description: Processing mode. Only applicable for DeepFilterNet.
enum:
- standard
- advanced
example: standard
model:
type: string
description: The Krisp model to use. Only applicable for Krisp.
enum:
- krisp-viva-tel-v2.kef
- krisp-viva-tel-lite-v1.kef
- krisp-viva-pro-v1.kef
- krisp-viva-ss-v1.kef
example: krisp-viva-tel-v2.kef
suppression_level:
type: number
description: Suppression level (0.0-100.0). Only applicable for Krisp.
minimum: 0.0
maximum: 100.0
example: 50.0
family:
type: string
description: AiCoustics model family. 'sparrow' optimized for human-to-human calls, 'quail' optimized for Voice
AI/STT. Only applicable for AiCoustics.
enum:
- sparrow
- quail
example: sparrow
size:
type: string
description: AiCoustics model size. 's' and 'l' work with both families. 'xs' and 'xxs' are sparrow-only. 'vf_l'
and 'vf_1_1_l' are quail-only. Only applicable for AiCoustics.
enum:
- s
- l
- xs
- xxs
- vf_l
- vf_1_1_l
example: l
enhancement_level:
type: number
description: Enhancement intensity (0.0-1.0). Only applicable for AiCoustics.
minimum: 0.0
maximum: 1.0
example: 0.5
voice_gain:
type: number
description: Voice gain multiplier (0.1-4.0). Only applicable for AiCoustics.
minimum: 0.1
maximum: 4.0
example: 1.0
NoiseSuppressionEnginesListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/noise-suppression-engines_NoiseSuppressionEngine'
required:
- data
NoiseSuppressionStart:
type: object
title: Noise Suppression Start Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
direction:
$ref: '#/components/schemas/NoiseSuppressionDirection'
noise_suppression_engine:
$ref: '#/components/schemas/NoiseSuppressionEngine'
noise_suppression_engine_config:
$ref: '#/components/schemas/NoiseSuppressionEngineConfig'
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
direction: both
noise_suppression_engine: DeepFilterNet
noise_suppression_engine_config:
attenuation_limit: 100
NoiseSuppressionStop:
type: object
title: Noise Suppression Stop Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
NotFoundError:
properties:
code:
type: string
title: Telnyx error code
detail:
type: string
title: Error details
title:
type: string
title: Error title
type: object
required:
- detail
title: NotFoundError
NotificationChannel:
description: A Notification Channel
properties:
id:
type: string
description: A UUID.
readOnly: true
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
notification_profile_id:
type: string
description: A UUID reference to the associated Notification Profile.
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
channel_type_id:
type: string
description: A Channel Type ID
enum:
- sms
- voice
- email
- webhook
channel_destination:
type: string
description: The destination associated with the channel type.
example: '+13125550000'
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2019-10-15T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2019-10-15T10:07:15.527Z'
readOnly: true
type: object
NotificationEvent:
description: An object representing the available notifications.
properties:
id:
type: string
description: A UUID.
readOnly: true
example: d5c395cd-9864-4609-b5e2-3f9fd4ce201a
name:
type: string
description: A human readable name.
example: Emergency Number Dialed
notification_category:
type: string
example: Calls
enabled:
type: boolean
example: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2019-10-15T10:07:15.527Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2019-10-15T10:07:15.527Z'
type: object
NotificationEventCondition:
properties:
id:
type: string
description: A UUID.
readOnly: true
example: 70c7c5cb-dce2-4124-accb-870d39dbe852
name:
type: string
example: from phone number
description:
type: string
example: When emergency number dialed from phone number X
notification_event_id:
type: string
example: d5c395cd-9864-4609-b5e2-3f9fd4ce201a
associated_record_type:
type: string
enum:
- account
- phone_number
example: phone_number
parameters:
type: array
items:
type: object
properties:
name:
type: string
example: phone_number
optional:
type: boolean
example: false
data_type:
type: string
example: string
enabled:
type: boolean
example: true
allow_multiple_channels:
description: Dictates whether a notification channel id needs to be provided when creating a notficiation setting.
type: boolean
example: false
asynchronous:
description: Dictates whether a notification setting will take effect immediately.
type: boolean
example: true
supported_channels:
description: Dictates the supported notification channel types that can be emitted.
type: array
items:
type: string
example:
- webhook
- sms
- email
- voice
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2019-10-15T10:07:15.527Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2019-10-15T10:07:15.527Z'
type: object
NotificationProfile:
description: A Collection of Notification Channels
properties:
id:
type: string
description: A UUID.
readOnly: true
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
name:
type: string
description: A human readable name.
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2019-10-15T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2019-10-15T10:07:15.527Z'
readOnly: true
type: object
NotificationSetting:
properties:
id:
type: string
description: A UUID.
readOnly: true
example: 8eb5b5f9-5893-423c-9f15-b487713d44d4
notification_event_condition_id:
type: string
description: A UUID reference to the associated Notification Event Condition.
example: 70c7c5cb-dce2-4124-accb-870d39dbe852
notification_profile_id:
type: string
description: A UUID reference to the associated Notification Profile.
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
associated_record_type:
type: string
example: phone_number
readOnly: true
associated_record_type_value:
type: string
example: '+13125550000'
readOnly: true
status:
type: string
description: Most preferences apply immediately; however, other may needs to propagate.
enum:
- enabled
- enable-received
- enable-pending
- enable-submtited
- delete-received
- delete-pending
- delete-submitted
- deleted
example: enable-received
readOnly: true
notification_channel_id:
type: string
description: A UUID reference to the associated Notification Channel.
example: 12455643-3cf1-4683-ad23-1cd32f7d5e0a
parameters:
type: array
items:
type: object
properties:
name:
type: string
example: phone_number
value:
type: string
example: '+13125550000'
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2019-10-15T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2019-10-15T10:07:15.527Z'
readOnly: true
type: object
NumberBlockOrder:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
record_type:
type: string
example: number_block_order
readOnly: true
starting_number:
type: string
description: Starting phone number block
example: '+19705555000'
range:
type: integer
description: The phone number range included in the block.
example: 10
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 1
readOnly: true
connection_id:
type: string
example: '346789098765567'
description: Identifies the connection associated to all numbers in the phone number block.
messaging_profile_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated to all numbers in the phone number block.
status:
type: string
enum:
- pending
- success
- failure
example: success
description: The status of the order.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
readOnly: true
example:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
starting_number: '+19705555000'
range: 10
record_type: number_block_order
connection_id: '346789098765567'
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600
phone_numbers_count: 10
status: pending
customer_reference: MY REF 001
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
requirements_met: true
type: object
NumberBreakdownResult:
type: object
properties:
tn:
type: string
description: Phone number
example: '+15551234567'
charge_type:
type: string
description: Type of charge for the number
example: local
service_owner_user_id:
type: string
description: User ID of the service owner
example: 0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8
service_owner_email:
type: string
format: email
description: Email address of the service owner
example: user@example.com
services:
type: array
items:
$ref: '#/components/schemas/ServiceDetail'
description: List of services associated with this number
required:
- tn
- charge_type
- service_owner_user_id
- service_owner_email
- services
NumberHealthMetrics:
type: object
required:
- message_count
- inbound_outbound_ratio
- success_ratio
- spam_ratio
description: 'High level health metrics about the number and it''s messaging sending patterns.
'
properties:
message_count:
type: integer
description: The number of messages analyzed for the health metrics.
inbound_outbound_ratio:
type: number
format: float
description: The ratio of messages received to the number of messages sent.
success_ratio:
type: number
format: float
description: The ratio of messages sucessfully delivered to the number of messages attempted.
spam_ratio:
type: number
format: float
description: The ratio of messages blocked for spam to the number of messages attempted.
example:
message_count: 10
inbound_outbound_ratio: 1
success_ratio: 2
spam_ratio: 10
NumberLiteralExpression:
description: Constant numeric value (float; integers are accepted and stored as float).
example:
type: number_literal
value: 18
properties:
type:
const: number_literal
title: Type
type: string
value:
description: Literal numeric value.
example: 18
title: Value
type: number
required:
- type
- value
title: NumberLiteralExpression
type: object
NumberLookupRecord:
type: object
title: NumberLookup
properties:
record_type:
type: string
description: Identifies the type of record
example: number_lookup
country_code:
type: string
description: Region code that matches the specific country calling code
example: US
national_format:
type: string
description: Hyphen-separated national number, preceded by the national destination code (NDC), with a 0 prefix,
if an NDC is found
example: (0312) 945-7420
phone_number:
type: string
description: E164-formatted phone number
example: '+13129457420'
fraud:
type:
- string
- 'null'
description: Unused
example: null
carrier:
$ref: '#/components/schemas/Carrier'
caller_name:
$ref: '#/components/schemas/CallerName'
portability:
$ref: '#/components/schemas/Portability'
nnid_override:
type:
- object
- 'null'
description: Network number ID (NNID) override for the phone number, when one applies (available only to accounts
enabled for NNID); otherwise null.
properties:
nnid:
type: string
description: The network number ID.
name:
type: string
description: Name associated with the NNID.
type:
type: string
description: The NNID type.
example: null
valid_number:
type: boolean
description: Indicates whether the phone number is valid.
example: true
enhanced_caller_name:
$ref: '#/components/schemas/EnhancedCallerName'
caller_identity:
$ref: '#/components/schemas/CallerIdentity'
NumberOrder:
title: Number Order With Phone Numbers
type: object
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
record_type:
type: string
example: number_order
readOnly: true
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 1
readOnly: true
connection_id:
type: string
example: '346789098765567'
description: Identifies the connection associated with this phone number.
messaging_profile_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
billing_group_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
phone_numbers:
type: array
items:
description: The unique phone numbers given as arguments in the job creation.
$ref: '#/components/schemas/PhoneNumbersJobPhoneNumber'
sub_number_orders_ids:
type: array
items:
type: string
status:
type: string
enum:
- pending
- success
- failure
description: The status of the order.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
readOnly: true
NumberOrderPhoneNumber:
properties:
id:
type: string
format: uuid
example: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
readOnly: true
record_type:
type: string
example: number_order_phone_number
readOnly: true
phone_number:
type: string
example: '+19705555098'
order_request_id:
type: string
format: uuid
example: dc8e4d67-33a0-4cbb-af74-7b58f05bd495
sub_number_order_id:
type: string
format: uuid
example: dc8e4d67-33a0-4cbb-af74-7b58f05bd496
country_code:
type: string
example: US
phone_number_type:
type: string
example: local
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/SubNumberOrderRegulatoryRequirementWithValue'
requirements_met:
type: boolean
description: True if all requirements are met for a phone number, false otherwise.
example: true
readOnly: true
status:
type: string
enum:
- pending
- success
- failure
description: The status of the phone number in the order.
readOnly: true
bundle_id:
type:
- string
- 'null'
format: uuid
example: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
readOnly: true
locality:
type: string
example: San Francisco
deadline:
type: string
format: date-time
example: '2024-05-31T11:14:00Z'
requirements_status:
type: string
enum:
- pending
- approved
- cancelled
- deleted
- requirement-info-exception
- requirement-info-pending
- requirement-info-under-review
description: Status of requirements (if applicable)
readOnly: true
is_block_number:
type: boolean
example: false
type: object
NumberOrderPhoneNumberRequirementGroupResponse:
type: object
properties:
status:
type: string
example: pending
order_request_id:
type: string
format: uuid
example: a11d58fe-88a4-494a-b752-8dea411993c6
country_code:
type: string
example: AT
is_block_number:
type: boolean
example: false
regulatory_requirements:
type: array
items:
type: object
properties:
requirement_id:
type: string
format: uuid
field_value:
type: string
example: '1234567890'
field_type:
type: string
example: textual
status:
type: string
example: pending-approval
locality:
type: string
example: AUSTRIA
phone_number_type:
type: string
example: toll_free
bundle_id:
type:
- string
- 'null'
format: uuid
sub_number_order_id:
type: string
format: uuid
example: f826ed66-b27c-4340-9dc0-57dc3459f1bd
deadline:
type: string
format: date-time
requirements_status:
type: string
example: requirement-info-under-review
id:
type: string
format: uuid
example: 613d517a-0432-4bae-a785-c11033bd0985
phone_number:
type: string
example: '+43800300238'
requirements_met:
type: boolean
example: false
record_type:
type: string
example: number_order_phone_number
NumberOrderWebhookEvent:
type: object
title: Number Order Event
properties:
data:
type: object
properties:
event_type:
type: string
enum:
- number_order.complete
example: number_order.complete
description: The type of event being sent
id:
type: string
format: uuid
example: d578b093-a0e7-4b64-b0d3-6b689a6ff170
description: Unique identifier for the event
occurred_at:
type: string
format: date-time
example: '2025-08-22T16:23:54.496464Z'
description: ISO 8601 timestamp of when the event occurred
payload:
$ref: '#/components/schemas/NumberOrderWithPhoneNumbers'
record_type:
type: string
example: event
description: Type of record
required:
- event_type
- id
- occurred_at
- payload
- record_type
meta:
type: object
properties:
attempt:
type: integer
example: 1
description: Webhook delivery attempt number
delivered_to:
type: string
format: uri
example: https://sample-api.com/webhook
description: URL where the webhook was delivered
required:
- attempt
- delivered_to
required:
- data
- meta
NumberOrderWebhookPayload:
title: Number Order Webhook Payload
type: object
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type:
type: string
example: number_order
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 1
connection_id:
type: string
example: '346789098765567'
description: Identifies the connection associated with this phone number.
messaging_profile_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
billing_group_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
phone_numbers:
type: array
items:
description: The unique phone numbers given as arguments in the job creation.
$ref: '#/components/schemas/NumberOrderWebhookPhoneNumber'
sub_number_orders_ids:
type: array
items:
type: string
status:
type: string
enum:
- pending
- success
- failure
description: The status of the order.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
description: Number order data delivered in a webhook. Server-generated fields are valid in this outbound webhook request.
NumberOrderWebhookPhoneNumber:
properties:
id:
type: string
format: uuid
example: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
record_type:
type: string
example: number_order_phone_number
phone_number:
type: string
example: '+19705555098'
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the phone number.
example: US
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/NumberOrderWebhookRegulatoryRequirement'
requirements_met:
type: boolean
description: True if all requirements are met for a phone number, false otherwise.
example: true
requirements_status:
type: string
enum:
- pending
- approved
- cancelled
- deleted
- requirement-info-exception
- requirement-info-pending
- requirement-info-under-review
description: Status of document requirements (if applicable)
status:
type: string
enum:
- pending
- success
- failure
description: The status of the phone number in the order.
bundle_id:
type: string
format: uuid
example: bc8e4d67-33a0-4cbb-af74-7b58f05bd494
phone_number_type:
type: string
enum:
- local
- mobile
- national
- shared_cost
- toll_free
description: Phone number type
country_code:
type: string
example: US
description: Country code of the phone number
example:
id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
record_type: number_order_phone_number
phone_number: '+19705555098'
bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd474
regulatory_requirements:
- record_type: phone_number_regulatory_requirement
requirement_id: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_value: 45f45a04-b4be-4592-95b1-9306b9db2b21
field_type: address
requirements_met: true
status: success
type: object
title: Number Order Webhook Phone Number
description: Phone number data delivered in a number order webhook.
NumberOrderWebhookRegulatoryRequirement:
properties:
record_type:
type: string
example: phone_number_regulatory_requirement
requirement_id:
type: string
format: uuid
description: Unique id for a requirement.
example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_type:
type: string
enum:
- textual
- datetime
- address
- document
example: address
field_value:
type: string
description: The value of the requirement, this could be an id to a resource or a string value.
example: 45f45a04-b4be-4592-95b1-9306b9db2b21
type: object
title: Number Order Webhook Regulatory Requirement
description: Regulatory requirement data delivered in a number order webhook.
NumberOrderWithPhoneNumbers:
title: NumberOrder
type: object
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
record_type:
type: string
example: number_order
readOnly: true
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 1
readOnly: true
connection_id:
type: string
example: '346789098765567'
description: Identifies the connection associated with this phone number.
messaging_profile_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
billing_group_id:
type: string
example: abc85f64-5717-4562-b3fc-2c9600
description: Identifies the messaging profile associated with the phone number.
phone_numbers:
type: array
items:
description: The unique phone numbers given as arguments in the job creation.
$ref: '#/components/schemas/PhoneNumber'
sub_number_orders_ids:
type: array
items:
type: string
status:
type: string
enum:
- pending
- success
- failure
description: The status of the order.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
readOnly: true
NumberPoolSettings:
type:
- object
- 'null'
required:
- toll_free_weight
- long_code_weight
- skip_unhealthy
description: 'Number Pool allows you to send messages from a pool of numbers of different types, assigning
weights to each type. The pool consists of all the long code and toll free numbers
assigned to the messaging profile.
To disable this feature, set the object field to `null`.
'
properties:
toll_free_weight:
type: number
example: 10
description: 'Defines the probability weight for a Toll Free number to be selected when sending a message.
The higher the weight the higher the probability. The sum of the weights for all number types
does not necessarily need to add to 100. Weight must be a non-negative number, and when equal
to zero it will remove the number type from the pool.
'
long_code_weight:
type: number
example: 1
description: 'Defines the probability weight for a Long Code number to be selected when sending a message.
The higher the weight the higher the probability. The sum of the weights for all number types
does not necessarily need to add to 100. Weight must be a non-negative number, and when equal
to zero it will remove the number type from the pool.
'
skip_unhealthy:
type: boolean
example: true
description: 'If set to true all unhealthy numbers will be automatically excluded from the pool.
Health metrics per number are calculated on a regular basis, taking into account the deliverability
rate and the amount of messages marked as spam by upstream carriers.
Numbers with a deliverability rate below 25% or spam ratio over 75% will be considered unhealthy.
'
sticky_sender:
type: boolean
default: false
description: 'If set to true, Number Pool will try to choose the same sending number for all messages to a particular
recipient. If the sending number becomes unhealthy and `skip_unhealthy` is set to true, a new
number will be chosen.
'
geomatch:
type: boolean
default: false
description: 'If set to true, Number Pool will try to choose a sending number with the same area code as the destination
number. If there are no such numbers available, a nunber with a different area code will be chosen. Currently
only NANP numbers are supported.
'
example:
toll_free_weight: 10
long_code_weight: 1
skip_unhealthy: true
sticky_sender: false
geomatch: false
NumberReputationExternalVerificationStatusChangedEvent:
type: object
required:
- data
- meta
properties:
data:
type: object
required:
- record_type
- id
- occurred_at
- event_type
- payload
properties:
record_type:
type: string
enum:
- event
example: event
id:
type: string
format: uuid
description: Identifies the event; the same id is reused if the event is redelivered.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at:
type: string
format: date-time
example: '2026-10-05T07:00:12.521992Z'
event_type:
type: string
enum:
- number_reputation.external_verification.status_changed
example: number_reputation.external_verification.status_changed
payload:
type: object
required:
- record_type
- enterprise_id
- status
- reviewed_at
properties:
record_type:
type: string
enum:
- reputation_external_verification
example: reputation_external_verification
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
status:
type: string
enum:
- approved
- rejected
description: 'The review outcome. `pending` is never delivered: the event is sent only once the proof is
reviewed.'
example: approved
rejection_reason:
type:
- string
- 'null'
description: Set only when `status` is `rejected`.
example: null
reviewed_at:
type: string
format: date-time
example: '2026-10-06T14:03:10+00:00'
description: 'When the review decision was made. Always set: this event is only sent after a review.'
meta:
type: object
properties:
attempt:
type: integer
example: 1
delivered_to:
type: string
format: uri
example: https://example.com/webhooks/telnyx
required:
- attempt
- delivered_to
example:
data:
record_type: event
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-10-05T07:00:12.521992Z'
event_type: number_reputation.external_verification.status_changed
payload:
record_type: reputation_external_verification
enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6
status: approved
rejection_reason: null
reviewed_at: '2026-10-06T14:03:10+00:00'
meta:
attempt: 1
delivered_to: https://example.com/webhooks/telnyx
NumberReputationNumberFlaggedEvent:
type: object
required:
- data
- meta
properties:
data:
type: object
required:
- record_type
- id
- occurred_at
- event_type
- payload
properties:
record_type:
type: string
enum:
- event
example: event
id:
type: string
format: uuid
description: Identifies the event; the same id is reused if the event is redelivered.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at:
type: string
format: date-time
example: '2026-10-05T07:00:12.521992Z'
event_type:
type: string
enum:
- number_reputation.number.flagged
example: number_reputation.number.flagged
payload:
type: object
required:
- record_type
- phone_number
- enterprise_id
- source
- ownership_status
- flag_reason
- confirm_by
properties:
record_type:
type: string
enum:
- reputation_phone_number
example: reputation_phone_number
phone_number:
type: string
example: '+13125550142'
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
source:
$ref: '#/components/schemas/ReputationNumberSource'
ownership_status:
type: string
enum:
- pending_confirmation
example: pending_confirmation
flag_reason:
type: string
enum:
- carrier_changed
- reverification_due
description: '`carrier_changed`: the number moved to a different carrier. `reverification_due`: the periodic
ownership re-verification is due.'
example: carrier_changed
confirm_by:
type: string
format: date-time
description: Confirm ownership before this time or the number is removed (carrier change) or flagged (re-verification).
example: '2026-10-08T07:00:00+00:00'
meta:
type: object
properties:
attempt:
type: integer
example: 1
delivered_to:
type: string
format: uri
example: https://example.com/webhooks/telnyx
required:
- attempt
- delivered_to
example:
data:
record_type: event
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-10-05T07:00:12.521992Z'
event_type: number_reputation.number.flagged
payload:
record_type: reputation_phone_number
phone_number: '+13125550142'
enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6
source: external
ownership_status: pending_confirmation
flag_reason: carrier_changed
confirm_by: '2026-10-08T07:00:00+00:00'
meta:
attempt: 1
delivered_to: https://example.com/webhooks/telnyx
NumberReputationNumberRemovedEvent:
type: object
required:
- data
- meta
properties:
data:
type: object
required:
- record_type
- id
- occurred_at
- event_type
- payload
properties:
record_type:
type: string
enum:
- event
example: event
id:
type: string
format: uuid
description: Identifies the event; the same id is reused if the event is redelivered.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at:
type: string
format: date-time
example: '2026-10-05T07:00:12.521992Z'
event_type:
type: string
enum:
- number_reputation.number.removed
example: number_reputation.number.removed
payload:
type: object
required:
- record_type
- phone_number
- enterprise_id
- source
- ownership_status
- removal_reason
- removed_at
properties:
record_type:
type: string
enum:
- reputation_phone_number
example: reputation_phone_number
phone_number:
type: string
example: '+13125550142'
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
source:
$ref: '#/components/schemas/ReputationNumberSource'
ownership_status:
type: string
enum:
- removed
example: removed
removal_reason:
type: string
enum:
- ported_away
- unconfirmed_ownership
- reassigned
- customer_reported
description: '`ported_away`: you confirmed you no longer own it after a carrier change. `unconfirmed_ownership`:
the confirmation deadline passed. `reassigned`: the number was reported as permanently disconnected. `customer_reported`:
you reported that you no longer own it. Removing a number yourself with `DELETE` sends no event.'
example: unconfirmed_ownership
removed_at:
type: string
format: date-time
example: '2026-10-09T07:00:03+00:00'
meta:
type: object
properties:
attempt:
type: integer
example: 1
delivered_to:
type: string
format: uri
example: https://example.com/webhooks/telnyx
required:
- attempt
- delivered_to
example:
data:
record_type: event
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-10-05T07:00:12.521992Z'
event_type: number_reputation.number.removed
payload:
record_type: reputation_phone_number
phone_number: '+13125550142'
enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6
source: external
ownership_status: removed
removal_reason: unconfirmed_ownership
removed_at: '2026-10-09T07:00:03+00:00'
meta:
attempt: 1
delivered_to: https://example.com/webhooks/telnyx
NumberReservation:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
record_type:
type: string
example: number_reservation
readOnly: true
phone_numbers:
type: array
items:
$ref: '#/components/schemas/ReservedPhoneNumber'
status:
type: string
enum:
- pending
- success
- failure
description: The status of the entire reservation.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the numbers reservation was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
errors:
type: string
description: Errors the reservation could happen upon
example: Number is already on hold
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number reservation was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
example:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type: number_reservation
phone_numbers:
- id: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type: reserved_phone_number
phone_number: '+19705555098'
status: pending
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
expired_at: '2018-01-01T00:00:00.000000Z'
errors: Number is already on hold
status: pending
customer_reference: MY REF 001
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
type: object
OAuthClient:
type: object
properties:
record_type:
type: string
enum:
- oauth_client
description: Record type identifier
client_id:
type: string
description: OAuth client identifier
name:
type: string
description: Human-readable name for the OAuth client
org_id:
type: string
description: Organization ID that owns this OAuth client
user_id:
type: string
description: User ID that created this OAuth client
allowed_scopes:
type: array
items:
type: string
description: List of allowed OAuth scopes
client_type:
type: string
enum:
- public
- confidential
description: OAuth client type
require_pkce:
type: boolean
description: Whether PKCE (Proof Key for Code Exchange) is required for this client
allowed_grant_types:
type: array
items:
type: string
enum:
- client_credentials
- authorization_code
- refresh_token
description: List of allowed OAuth grant types
redirect_uris:
type: array
items:
type: string
format: uri
description: List of allowed redirect URIs
logo_uri:
type:
- string
- 'null'
format: uri
description: URL of the client logo
tos_uri:
type:
- string
- 'null'
format: uri
description: URL of the client's terms of service
policy_uri:
type:
- string
- 'null'
format: uri
description: URL of the client's privacy policy
client_secret:
type:
- string
- 'null'
description: Client secret (only included when available, for confidential clients)
created_at:
type: string
format: date-time
description: Timestamp when the client was created
updated_at:
type: string
format: date-time
description: Timestamp when the client was last updated
required:
- record_type
- client_id
- name
- org_id
- user_id
- client_type
- require_pkce
- created_at
- updated_at
OAuthClientCreateRequest:
type: object
properties:
name:
type: string
description: The name of the OAuth client
example: My OAuth client
allowed_scopes:
type: array
items:
type: string
description: List of allowed OAuth scopes
example:
- admin
client_type:
type: string
enum:
- public
- confidential
description: OAuth client type
require_pkce:
type: boolean
description: Whether PKCE (Proof Key for Code Exchange) is required for this client
default: false
allowed_grant_types:
type: array
items:
type: string
enum:
- client_credentials
- authorization_code
- refresh_token
description: List of allowed OAuth grant types
redirect_uris:
type: array
items:
type: string
format: uri
description: List of redirect URIs (required for authorization_code flow)
default: []
logo_uri:
type: string
format: uri
description: URL of the client logo
policy_uri:
type: string
format: uri
description: URL of the client's privacy policy
tos_uri:
type: string
format: uri
description: URL of the client's terms of service
required:
- name
- allowed_scopes
- client_type
- allowed_grant_types
additionalProperties: false
OAuthClientUpdateRequest:
type: object
properties:
name:
type: string
description: The name of the OAuth client
allowed_scopes:
type: array
items:
type: string
description: List of allowed OAuth scopes
example:
- admin
require_pkce:
type: boolean
description: Whether PKCE (Proof Key for Code Exchange) is required for this client
allowed_grant_types:
type: array
items:
type: string
enum:
- client_credentials
- authorization_code
- refresh_token
description: List of allowed OAuth grant types
redirect_uris:
type: array
items:
type: string
format: uri
description: List of redirect URIs
logo_uri:
type: string
format: uri
description: URL of the client logo
policy_uri:
type: string
format: uri
description: URL of the client's privacy policy
tos_uri:
type: string
format: uri
description: URL of the client's terms of service
additionalProperties: false
OAuthDynamicRegistrationRequest:
type: object
properties:
redirect_uris:
type: array
items:
type: string
format: uri
description: Array of redirection URI strings for use in redirect-based flows
example:
- https://example.com/callback
client_name:
type: string
description: Human-readable string name of the client to be presented to the end-user
example: My OAuth Application
grant_types:
type: array
items:
type: string
enum:
- authorization_code
- client_credentials
- refresh_token
description: Array of OAuth 2.0 grant type strings that the client may use
default:
- authorization_code
response_types:
type: array
items:
type: string
description: Array of the OAuth 2.0 response type strings that the client may use
default:
- code
scope:
type: string
description: Space-separated string of scope values that the client may use
example: admin
token_endpoint_auth_method:
type: string
enum:
- none
- client_secret_basic
- client_secret_post
description: Authentication method for the token endpoint
default: client_secret_basic
logo_uri:
type: string
format: uri
description: URL of the client logo
tos_uri:
type: string
format: uri
description: URL of the client's terms of service
policy_uri:
type: string
format: uri
description: URL of the client's privacy policy
additionalProperties: false
OAuthDynamicRegistrationResponse:
type: object
properties:
client_id:
type: string
description: Unique client identifier
example: abc123def456
client_secret:
type: string
description: Client secret (only for confidential clients)
redirect_uris:
type: array
items:
type: string
format: uri
description: Array of redirection URIs
client_name:
type: string
description: Human-readable client name
grant_types:
type: array
items:
type: string
description: Array of allowed grant types
response_types:
type: array
items:
type: string
description: Array of allowed response types
scope:
type: string
description: Space-separated scope values
token_endpoint_auth_method:
type: string
description: Token endpoint authentication method
client_id_issued_at:
type: integer
description: Unix timestamp of when the client ID was issued
logo_uri:
type: string
format: uri
description: URL of the client logo
tos_uri:
type: string
format: uri
description: URL of the client's terms of service
policy_uri:
type: string
format: uri
description: URL of the client's privacy policy
required:
- client_id
- client_id_issued_at
OAuthGrant:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the OAuth grant
record_type:
type: string
enum:
- oauth_grant
description: Record type identifier
client_id:
type: string
description: OAuth client identifier
scopes:
type: array
items:
type: string
description: List of granted OAuth scopes
last_used_at:
type:
- string
- 'null'
format: date-time
description: Timestamp when the grant was last used
created_at:
type: string
format: date-time
description: Timestamp when the grant was created
required:
- id
- record_type
- client_id
- scopes
- created_at
Observability:
properties:
status:
$ref: '#/components/schemas/ObservabilityStatus'
default: disabled
secret_key_ref:
title: Secret Key Ref
type: string
public_key_ref:
title: Public Key Ref
type: string
host:
title: Host
type: string
prompt_name:
title: Prompt Name
type: string
prompt_version:
title: Prompt Version
type: integer
minimum: 1.0
prompt_label:
title: Prompt Label
type: string
prompt_sync:
$ref: '#/components/schemas/PromptSyncStatus'
default: disabled
type: object
title: Observability
ObservabilityReq:
properties:
status:
$ref: '#/components/schemas/ObservabilityStatus'
default: disabled
secret_key_ref:
title: Secret Key Ref
type: string
public_key_ref:
title: Public Key Ref
type: string
host:
title: Host
type: string
prompt_name:
title: Prompt Name
type: string
prompt_version:
title: Prompt Version
type: integer
minimum: 1.0
prompt_label:
title: Prompt Label
type: string
prompt_sync:
$ref: '#/components/schemas/PromptSyncStatus'
default: disabled
type: object
title: ObservabilityReq
ObservabilityStatus:
type: string
enum:
- enabled
- disabled
title: ObservabilityStatus
ObserveAction:
type: object
description: Capture an observation (DOM snapshot) of the current page.
required:
- type
properties:
type:
const: observe
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
OffsetMeta:
type: object
required:
- page_number
- page_size
- total_pages
- total_results
properties:
page_number:
type: integer
page_size:
type: integer
total_pages:
type: integer
total_results:
type: integer
OffsetPaginationMeta:
type: object
required:
- page_number
- page_size
- total_pages
- total_results
properties:
page_number:
type: integer
minimum: 1
page_size:
type: integer
minimum: 1
total_pages:
type: integer
minimum: 0
total_results:
type: integer
minimum: 0
OpenAIEmbeddingData:
type: object
properties:
object:
type: string
default: embedding
description: The object type, always 'embedding'
embedding:
type: array
items:
type: number
description: The embedding vector
index:
type: integer
description: The index of the embedding in the list of embeddings
required:
- object
- embedding
- index
title: OpenAIEmbeddingData
OpenAIEmbeddingModelMetadata:
type: object
properties:
id:
type: string
description: The model identifier
example: thenlper/gte-large
object:
type: string
default: model
description: The object type, always 'model'
created:
type: integer
description: Unix timestamp of when the model was created
owned_by:
type: string
description: The organization that owns the model
example: telnyx
required:
- id
- object
- created
- owned_by
title: OpenAIEmbeddingModelMetadata
OpenAIEmbeddingModelsResponse:
type: object
properties:
object:
type: string
default: list
description: The object type, always 'list'
data:
type: array
items:
$ref: '#/components/schemas/OpenAIEmbeddingModelMetadata'
description: List of available embedding models
required:
- object
- data
title: OpenAIEmbeddingModelsResponse
OpenAIEmbeddingRequest:
type: object
properties:
input:
oneOf:
- type: string
description: A single text string to embed
- type: array
items:
type: string
description: An array of text strings to embed
description: Input text to embed. Can be a string or array of strings.
model:
type: string
description: ID of the model to use. Use the List embedding models endpoint to see available models.
example: thenlper/gte-large
encoding_format:
type: string
enum:
- float
- base64
default: float
description: The format to return the embeddings in.
dimensions:
type: integer
description: The number of dimensions the resulting output embeddings should have. Only supported in some models.
user:
type: string
description: A unique identifier representing your end-user for monitoring and abuse detection.
required:
- input
- model
title: OpenAIEmbeddingRequest
OpenAIEmbeddingResponse:
type: object
properties:
object:
type: string
default: list
description: The object type, always 'list'
data:
type: array
items:
$ref: '#/components/schemas/OpenAIEmbeddingData'
description: List of embedding objects
model:
type: string
description: The model used for embedding
usage:
$ref: '#/components/schemas/OpenAIEmbeddingUsage'
required:
- object
- data
- model
- usage
title: OpenAIEmbeddingResponse
OpenAIEmbeddingUsage:
type: object
properties:
prompt_tokens:
type: integer
description: Number of tokens in the input
total_tokens:
type: integer
description: Total number of tokens used
required:
- prompt_tokens
- total_tokens
title: OpenAIEmbeddingUsage
Operation:
properties:
operation_id:
type: string
title: Operation Id
status:
type: string
title: Status
description: 'Where the write is. `completed`, `failed` and `cancelled` are terminal: stop polling at any of them,
and treat `failed` and `cancelled` as writes that did not happen.'
enum:
- pending
- processing
- completed
- failed
- cancelled
created_at:
anyOf:
- type: string
- type: 'null'
title: Created At
completed_at:
anyOf:
- type: string
- type: 'null'
title: Completed At
type: object
required:
- operation_id
- status
title: Operation
OperationResponse:
properties:
data:
$ref: '#/components/schemas/Operation'
type: object
required:
- data
title: OperationResponse
Operator:
type: string
enum:
- in
- not_in
- starts_with
title: Operator
OptOutItem:
type: object
properties:
from:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
to:
$ref: '#/components/schemas/ToNumber'
messaging_profile_id:
type:
- string
- 'null'
description: Unique identifier for a messaging profile.
keyword:
type:
- string
- 'null'
description: The keyword that triggered the opt-out.
example: STOP
created_at:
type: string
format: date-time
description: The timestamp when the opt-out was created
example: '2025-04-28 12:00:38.631252+00:00'
OptOutListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/OptOutItem'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
OrderExternalVetting:
title: OrderExternalVetting
required:
- evpId
- vettingClass
type: object
properties:
evpId:
title: Evpid
maxLength: 10
type: string
description: External vetting provider ID for the brand.
vettingClass:
title: Vettingclass
type: string
description: Identifies the vetting classification.
OrganizationContact:
type: object
required:
- first_name
- last_name
- email
- job_title
- phone_number
properties:
first_name:
type: string
maxLength: 255
description: The first name of the main person Telnyx should contact about this account.
example: Sam
last_name:
type: string
maxLength: 255
description: The last name of the main person Telnyx should contact about this account.
example: Org
email:
type: string
format: email
description: The email address of the main person Telnyx should contact about this account. For a call center (BPO)
account this is the email you will verify later, so use a mailbox you can access.
example: sam@acmeplumbing.example.com
job_title:
type: string
maxLength: 255
description: The job title of the main person Telnyx should contact about this account.
example: Compliance Lead
phone_number:
type: string
description: The phone number of the main contact, in E.164 format, for example +12125551234.
example: '+13125550000'
OrganizationUser:
type: object
title: OrganizationUser
properties:
id:
type: string
description: Identifies the specific resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource. Can be 'organization_owner' or 'organization_sub_user'.
example: organization_sub_user
email:
type: string
format: email
description: The email address of the user.
example: user@example.com
user_status:
description: The status of the account.
type: string
enum:
- enabled
- disabled
- blocked
default: enabled
example: enabled
organization_user_bypasses_sso:
type: boolean
description: Indicates whether this user is allowed to bypass SSO and use password authentication.
example: false
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
last_sign_in_at:
type:
- string
- 'null'
description: ISO 8601 formatted date indicating when the resource last signed into the portal. Null if the user
has never signed in.
example: '2018-02-02T22:25:27.521Z'
groups:
type: array
description: The groups the user belongs to. Only included when include_groups parameter is true.
items:
$ref: '#/components/schemas/UserGroupReference'
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: organization_sub_user
email: user@example.com
user_status: enabled
organization_user_bypasses_sso: false
created_at: '2018-02-02T22:25:27.521Z'
last_sign_in_at: '2018-02-02T22:25:27.521Z'
OrganizationUserWithGroups:
type: object
title: OrganizationUserWithGroups
description: An organization user with their group memberships always included.
properties:
id:
type: string
description: Identifies the specific resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource. Can be 'organization_owner' or 'organization_sub_user'.
example: organization_sub_user
email:
type: string
format: email
description: The email address of the user.
example: user@example.com
user_status:
description: The status of the account.
type: string
enum:
- enabled
- disabled
- blocked
default: enabled
example: enabled
organization_user_bypasses_sso:
type: boolean
description: Indicates whether this user is allowed to bypass SSO and use password authentication.
example: false
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
last_sign_in_at:
type:
- string
- 'null'
description: ISO 8601 formatted date indicating when the resource last signed into the portal. Null if the user
has never signed in.
example: '2018-02-02T22:25:27.521Z'
groups:
type: array
description: The groups the user belongs to.
items:
$ref: '#/components/schemas/UserGroupReference'
required:
- id
- record_type
- email
- user_status
- created_at
- groups
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: organization_sub_user
email: user@example.com
user_status: enabled
organization_user_bypasses_sso: false
created_at: '2018-02-02T22:25:27.521Z'
last_sign_in_at: '2018-02-02T22:25:27.521Z'
groups:
- id: 7b09cdc3-8948-47f0-aa62-74ac943d6c59
name: Engineering
OriginalMediaUrl:
description: The original URL to the PDF used for the fax's media. If media_name was supplied, this is omitted
type: string
example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf
OutboundCallRecording:
type: object
example:
call_recording_type: by_caller_phone_number
call_recording_caller_phone_numbers:
- '+19705555098'
call_recording_channels: dual
call_recording_format: mp3
properties:
call_recording_type:
type: string
description: Specifies which calls are recorded.
enum:
- all
- none
- by_caller_phone_number
call_recording_caller_phone_numbers:
type: array
items:
type: string
description: When call_recording_type is 'by_caller_phone_number', only outbound calls using one of these numbers
will be recorded. Numbers must be specified in E164 format.
example:
- '+19705555098'
call_recording_channels:
type: string
description: When using 'dual' channels, the final audio file will be a stereo recording with the first leg on channel
A, and the rest on channel B.
example: dual
default: single
enum:
- single
- dual
call_recording_format:
type: string
description: The audio file format for calls being recorded.
example: mp3
default: wav
enum:
- wav
- mp3
OutboundFqdn:
type: object
title: Connection Outbound Settings
properties:
ani_override:
title: ANI override type
type: string
description: Set a phone number as the ani_override value to override caller id number on outbound calls.
x-format: E.164
ani_override_type:
title: ANI override type
type: string
description: Specifies when we should apply your ani_override setting. Only applies when ani_override is not blank.
enum:
- always
- normal
- emergency
default: always
example: normal
call_parking_enabled:
type:
- boolean
- 'null'
default: false
description: Forces all SIP calls originated on this connection to be \"parked\" instead of \"bridged\" to the destination
specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command
to define which action will be taken next.
channel_limit:
type: integer
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
instant_ringback_enabled:
type: boolean
default: false
description: When set, ringback will not wait for indication before sending ringback tone to calling party.
ip_authentication_method:
type: string
example: credential-authentication
default: ip-authentication
enum:
- credential-authentication
- ip-authentication
ip_authentication_token:
type: string
localization:
type: string
default: US
description: A 2-character country code specifying the country whose national dialing rules should be used. For
example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank,
Telnyx will try US and GB dialing rules, in that order, by default.",
example: US
outbound_voice_profile_id:
$ref: '#/components/schemas/connections_OutboundVoiceProfileId'
t38_reinvite_source:
type: string
enum:
- telnyx
- customer
- disabled
- passthru
- caller-passthru
- callee-passthru
description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether
or not Telnyx sends a t.38 reinvite. By default, Telnyx will send the re-invite. If set to `customer`, the caller
is expected to send the t.38 reinvite.
default: customer
tech_prefix:
type: string
description: Numerical chars only, exactly 4 characters.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
minimum: 1
maximum: 600
default: 90
OutboundIp:
type: object
title: Outbound Ip
properties:
call_parking_enabled:
type:
- boolean
- 'null'
default: false
description: Forces all SIP calls originated on this connection to be "parked" instead of "bridged" to the destination
specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command
to define which action will be taken next.
ani_override:
type: string
description: Set a phone number as the ani_override value to override caller id number on outbound calls.
default: ''
ani_override_type:
type: string
enum:
- always
- normal
- emergency
description: Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.
default: always
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
instant_ringback_enabled:
type: boolean
default: true
description: When set, ringback will not wait for indication before sending ringback tone to calling party.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
localization:
type: string
default: null
description: A 2-character country code specifying the country whose national dialing rules should be used. For
example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank,
Telnyx will try US and GB dialing rules, in that order, by default.
t38_reinvite_source:
type: string
enum:
- telnyx
- customer
- disabled
- passthru
- caller-passthru
- callee-passthru
description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether
or not Telnyx sends a t.38 reinvite. By default, Telnyx will send the re-invite. If set to `customer`,
the caller is expected to send the t.38 reinvite.
default: customer
tech_prefix:
type: string
description: Numerical chars only, exactly 4 characters.
default: ''
ip_authentication_method:
type: string
default: tech-prefixp-charge-info
example: tech-prefixp-charge-info
enum:
- tech-prefixp-charge-info
- token
ip_authentication_token:
type: string
default: null
outbound_voice_profile_id:
$ref: '#/components/schemas/connections_OutboundVoiceProfileId'
example:
call_parking_enabled: true
ani_override: string
ani_override_type: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: string
t38_reinvite_source: customer
tech_prefix: string
ip_authentication_method: token
ip_authentication_token: string
outbound_voice_profile_id: '1293384261075731499'
OutboundMessage:
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Identifies the type of resource.
event_type:
type: string
example: message.sent
enum:
- message.sent
- message.finalized
description: The type of event being delivered.
occurred_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
payload:
$ref: '#/components/schemas/OutboundMessagePayload'
example:
record_type: event
id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
event_type: message.sent
occurred_at: '2019-01-23T18:10:02.574Z'
payload:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: MMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: queued
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media:
- url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png
content_type: null
sha256: null
size: null
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
OutboundMessageEvent:
type: object
properties:
data:
$ref: '#/components/schemas/OutboundMessage'
meta:
type: object
properties:
attempt:
type: integer
example: 1
description: Number of attempts to deliver the webhook event.
delivered_to:
type: string
format: url
example: https://www.example.com/hooks
description: The webhook URL the event was delivered to.
OutboundMessagePayload:
type: object
properties:
record_type:
type: string
example: message
enum:
- message
description: Identifies the type of the resource.
direction:
type: string
example: outbound
enum:
- outbound
description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from
you.
id:
type: string
format: uuid
description: Identifies the type of resource.
type:
type: string
enum:
- SMS
- MMS
description: The type of message.
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
organization_id:
type: string
format: uuid
description: The id of the organization the messaging profile belongs to.
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
to:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
description: The delivery status of the message.
enum:
- queued
- sending
- sent
- expired
- sending_failed
- delivery_unconfirmed
- delivered
- delivery_failed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
cc:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
enum:
- queued
- sending
- sent
- delivered
- sending_failed
- delivery_failed
- delivery_unconfirmed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
num_chars:
type: integer
description: The number of characters in the message text
subject:
type:
- string
- 'null'
description: Subject of multimedia message
media:
type: array
items:
type: object
properties:
url:
type: string
format: url
description: The url of the media requested to be sent.
content_type:
type:
- string
- 'null'
x-format: mime-type
description: The MIME type of the requested media.
sha256:
type:
- string
- 'null'
description: The SHA256 hash of the requested media.
size:
type:
- integer
- 'null'
description: The size of the requested media.
webhook_url:
type:
- string
- 'null'
format: url
description: The URL where webhooks related to this message will be sent.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
encoding:
type: string
description: Encoding scheme used for the message body.
parts:
type: integer
minimum: 1
maximum: 10
description: Number of parts into which the message's body must be split.
tags:
type: array
description: Tags associated with the resource.
items:
type: string
cost:
type:
- object
- 'null'
properties:
amount:
type: string
description: The amount deducted from your account.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
cost_breakdown:
type:
- object
- 'null'
properties:
carrier_fee:
type: object
properties:
amount:
type: string
description: The carrier fee amount.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
rate:
type: object
properties:
amount:
type: string
description: The rate amount applied.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
description: Detailed breakdown of the message cost components.
tcr_campaign_id:
type:
- string
- 'null'
description: The Campaign Registry (TCR) campaign ID associated with the message.
tcr_campaign_billable:
type: boolean
description: Indicates whether the TCR campaign is billable.
tcr_campaign_registered:
type:
- string
- 'null'
description: The registration status of the TCR campaign.
example: REGISTERED
received_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
sent_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was sent.
completed_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was finalized.
valid_until:
type:
- string
- 'null'
description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'.
Once the message moves out of the queue, this field will be nulled
format: date-time
errors:
type: array
description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
items:
$ref: '#/components/schemas/messaging_Error'
smart_encoding_applied:
type: boolean
description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters
were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text
is preserved in webhooks.
wait_seconds:
type:
- number
- 'null'
format: float
description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents the
maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.
example: 0.5
example:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: MMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: queued
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media:
- url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png
content_type: null
sha256: null
size: null
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
wait_seconds: 0.5
OutboundMessagePayloadCancelled:
type: object
properties:
record_type:
type: string
example: message
enum:
- message
description: Identifies the type of the resource.
direction:
type: string
example: outbound
enum:
- outbound
description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from
you.
id:
type: string
format: uuid
description: Identifies the type of resource.
type:
type: string
enum:
- SMS
- MMS
description: The type of message.
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
organization_id:
type: string
format: uuid
description: The id of the organization the messaging profile belongs to.
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
to:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
description: The delivery status of the message.
enum:
- scheduled
- queued
- sending
- sent
- cancelled
- expired
- sending_failed
- delivery_unconfirmed
- delivered
- delivery_failed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
cc:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
description: The delivery status of the message.
enum:
- scheduled
- queued
- sending
- sent
- cancelled
- expired
- sending_failed
- delivery_unconfirmed
- delivered
- delivery_failed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
num_chars:
type: integer
description: The number of characters in the message text
subject:
type:
- string
- 'null'
description: Subject of multimedia message
media:
type: array
items:
type: object
properties:
url:
type: string
format: url
description: The url of the media requested to be sent.
content_type:
type:
- string
- 'null'
x-format: mime-type
description: The MIME type of the requested media.
sha256:
type:
- string
- 'null'
description: The SHA256 hash of the requested media.
size:
type:
- integer
- 'null'
description: The size of the requested media.
webhook_url:
type:
- string
- 'null'
format: url
description: The URL where webhooks related to this message will be sent.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
encoding:
type: string
description: Encoding scheme used for the message body.
parts:
type: integer
minimum: 1
maximum: 10
description: Number of parts into which the message's body must be split.
tags:
type: array
description: Tags associated with the resource.
items:
type: string
cost:
type:
- object
- 'null'
properties:
amount:
type: string
description: The amount deducted from your account.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
cost_breakdown:
type:
- object
- 'null'
properties:
carrier_fee:
type: object
properties:
amount:
type: string
description: The carrier fee amount.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
rate:
type: object
properties:
amount:
type: string
description: The rate amount applied.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
description: Detailed breakdown of the message cost components.
tcr_campaign_id:
type:
- string
- 'null'
description: The Campaign Registry (TCR) campaign ID associated with the message.
tcr_campaign_billable:
type: boolean
description: Indicates whether the TCR campaign is billable.
tcr_campaign_registered:
type:
- string
- 'null'
description: The registration status of the TCR campaign.
example: REGISTERED
received_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
sent_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was sent.
completed_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was finalized.
valid_until:
type:
- string
- 'null'
description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'.
Once the message moves out of the queue, this field will be nulled
format: date-time
errors:
type: array
description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
items:
$ref: '#/components/schemas/messaging_Error'
smart_encoding_applied:
type: boolean
description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters
were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text
is preserved in webhooks.
example:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: SMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: cancelled
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0'
currency: USD
cost_breakdown: null
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
OutboundMessageResponse:
type: object
properties:
data:
$ref: '#/components/schemas/OutboundMessagePayload'
OutboundVoiceProfile:
type: object
title: Outbound Voice Profile
required:
- name
example:
id: '1293384261075731499'
record_type: outbound_voice_profile
name: office
connections_count: 12
traffic_type: conversational
service_plan: global
concurrent_call_limit: 10
enabled: true
tags:
- office-profile
usage_payment_method: rate-deck
whitelisted_destinations:
- US
- BR
- AU
max_destination_rate: 10
daily_spend_limit: '100.00'
daily_spend_limit_enabled: true
call_recording:
call_recording_type: by_caller_phone_number
call_recording_caller_phone_numbers:
- '+19705555098'
call_recording_channels: dual
call_recording_format: mp3
billing_group_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
calling_window:
start_time: 08:00:00.00Z
end_time: 20:00:00.00Z
calls_per_cld: 5
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
properties:
id:
type: string
description: Identifies the resource.
example: '1293384261075731499'
record_type:
type: string
description: Identifies the type of the resource.
example: outbound_voice_profile
name:
type: string
description: A user-supplied name to help with organization.
example: office
minLength: 3
connections_count:
type: integer
description: Amount of connections associated with this outbound voice profile.
example: 12
traffic_type:
$ref: '#/components/schemas/TrafficType'
service_plan:
$ref: '#/components/schemas/ServicePlan'
concurrent_call_limit:
type:
- integer
- 'null'
description: Must be no more than your global concurrent call limit. Null means no limit.
example: 10
enabled:
type: boolean
description: Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound
calls being blocked for the associated Connections.
example: true
default: true
tags:
type: array
items:
type: string
example:
- office-profile
usage_payment_method:
$ref: '#/components/schemas/UsagePaymentMethod'
whitelisted_destinations:
type: array
items:
type: string
description: The list of destinations you want to be able to call using this outbound voice profile formatted in
alpha2.
example:
- US
- BR
- AU
default:
- US
- CA
max_destination_rate:
type: number
description: Maximum rate (price per minute) for a Destination to be allowed when making outbound calls.
daily_spend_limit:
type: string
description: The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile
in a day before disallowing new calls.
example: '100.00'
daily_spend_limit_enabled:
type: boolean
description: Specifies whether to enforce the daily_spend_limit on this outbound voice profile.
example: true
default: false
call_recording:
$ref: '#/components/schemas/OutboundCallRecording'
billing_group_id:
type:
- string
- 'null'
format: uuid
description: The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
default: null
calling_window:
type: object
description: Specifies the time window and call limits for calls made using this outbound voice profile. Note that
all times are UTC in 24-hour clock time.
example:
start_time: 08:00:00.00Z
end_time: 20:00:00.00Z
calls_per_cld: 5
properties:
start_time:
type: string
description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.
example: 08:00:00.00Z
end_time:
type: string
description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.
example: 20:00:00.00Z
calls_per_cld:
type: integer
description: The maximum number of calls that can be initiated to a single called party (CLD) within the calling
window. A null value means no limit.
example: 5
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
OutboundVoiceProfileId:
title: Outbound Voice Profile ID
type: string
description: Identifies the associated outbound voice profile.
example: '1293384261075731499'
OwnershipConfirmRequest:
type: object
required:
- still_own
properties:
still_own:
type: boolean
description: '`true` confirms you still own the number. `false` reports that you no longer own it and removes it
from Number Reputation.'
example: true
evidence_document_id:
type: string
minLength: 1
maxLength: 255
description: Optional id of an uploaded document supporting the confirmation.
example: 2a7e8337-e803-4057-a4ae-26c40eb0bc6c
PLMN:
type: object
title: Public land mobile network
properties:
code:
type: string
description: Public land mobile network code (MCC + MNC).
example: '311210'
name:
type: string
description: The name of the network.
example: Telnyx, LLC
required:
- code
- name
PLMNCode:
type: string
description: Public land mobile network code (MCC + MNC).
example: '311210'
PWGAssignedResourcesSummary:
type: object
description: The summary of the resource that have been assigned to the Private Wireless Gateway.
properties:
record_type:
type: string
description: The type of the resource assigned to the Private Wireless Gateway.
example: sim_card_group
readOnly: true
count:
type: integer
description: The current count of a resource type assigned to the Private Wireless Gateway.
example: 1
readOnly: true
PageMeta:
properties:
page_number:
type: integer
title: Page Number
description: The page returned, counting from 1.
page_size:
type: integer
title: Page Size
description: How many results a page holds.
total_pages:
type: integer
title: Total Pages
description: 'Pages that can be requested; 0 when nothing matched. Page until `page_number` reaches it rather than
until a page comes back short: a page can hold fewer than `page_size` results without being the last. Capped at
the deepest page served, so on a very large listing it covers fewer results than `total_results`.'
total_results:
type: integer
title: Total Results
description: Results the request matched, including any past the deepest page.
type: object
required:
- page_number
- page_size
- total_pages
- total_results
title: PageMeta
description: 'Where a listing''s page sits in the whole.
A page is a snapshot: the counts it reports and the order it is drawn in
both move as writes land, so paging through a busy namespace can repeat or
miss an entry at a page boundary.'
PaginatedAssistantTestList:
properties:
meta:
allOf:
- $ref: '#/components/schemas/Meta'
description: Pagination metadata including total counts and current page info.
data:
items:
$ref: '#/components/schemas/AssistantTestResponse'
type: array
title: Data
description: Array of assistant test objects for the current page.
type: object
required:
- meta
- data
title: PaginatedAssistantTestList
description: 'Paginated list of assistant tests with metadata.
Returns a subset of tests based on pagination parameters along with
metadata for implementing pagination controls in the UI.'
PaginatedBillingBundlesResponse:
title: PaginatedBillingBundlesResponse
required:
- meta
- data
type: object
properties:
meta:
$ref: '#/components/schemas/PaginationResponse'
data:
title: Data
type: array
items:
$ref: '#/components/schemas/BillingBundleSummary'
PaginatedDeletedAssistantsResponse:
properties:
data:
items:
$ref: '#/components/schemas/DeletedAssistant'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: PaginatedDeletedAssistantsResponse
description: Paginated list of Recently Deleted assistants.
PaginatedScheduledEventList:
properties:
meta:
$ref: '#/components/schemas/Meta'
data:
items:
anyOf:
- $ref: '#/components/schemas/ScheduledPhoneCallEventResponse'
- $ref: '#/components/schemas/ScheduledSmsEventResponse'
type: array
title: Data
type: object
required:
- meta
- data
title: PaginatedScheduledEventList
PaginatedTestRunList:
properties:
meta:
$ref: '#/components/schemas/Meta'
description: Pagination metadata including total counts and current page info.
data:
items:
$ref: '#/components/schemas/TestRunResponse'
type: array
title: Data
description: Array of test run objects for the current page.
type: object
required:
- meta
- data
title: PaginatedTestRunList
description: 'Paginated list of test runs with metadata.
Returns test run execution results with pagination support for
handling large numbers of test executions.'
PaginatedUserBundlesResponse:
title: PaginatedUserBundlesResponse
required:
- meta
- data
type: object
properties:
meta:
$ref: '#/components/schemas/PaginationResponse'
data:
title: Data
type: array
items:
$ref: '#/components/schemas/UserBundle'
Paginated_VerificationRequestStatus_:
title: Paginated[VerificationRequestStatus]
type: object
required:
- records
- total_records
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/VerificationRequestStatus'
description: The records yielded by this request
default: []
total_records:
title: Total Records
type: integer
description: The total amount of records for these query parameters
default: 0
description: A paginated response
Paginated_VerificationStatusHistoryEntry_:
title: Paginated[VerificationStatusHistoryEntry]
type: object
required:
- records
- total_records
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/VerificationStatusHistoryEntry'
description: The records yielded by this request
default: []
total_records:
title: Total Records
type: integer
description: The total amount of records for these query parameters
default: 0
description: A paginated response
PaginationData:
type: object
properties:
total_pages:
type: integer
description: Total number of pages.
example: 5
total_results:
type: integer
description: Total number of results.
example: 100
page_number:
type: integer
description: Selected page number.
example: 1
page_size:
type: integer
description: Records per single page
example: 20
PaginationMeta:
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
PaginationMetaSimple:
type: object
properties:
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
PaginationResponse:
title: PaginationResponse
required:
- total_results
- total_pages
- page_number
- page_size
type: object
properties:
total_results:
title: Total Results
type: integer
example: 55
description: Total number of results returned.
total_pages:
title: Total Pages
type: integer
example: 3
description: Total number of pages from the results.
page_number:
title: Page Number
type: integer
example: 2
description: The current page number.
page_size:
title: Page Size
type: integer
example: 25
description: The number of results per page.
ParentRelationshipInfo:
type: object
required:
- relationship_type
- via
- cost_rollup
- traversal_enabled
- description
- parent_product
- parent_event
- parent_record_type
properties:
relationship_type:
type: string
via:
$ref: '#/components/schemas/MetadataFieldMapping'
cost_rollup:
type: boolean
traversal_enabled:
type: boolean
description:
type: string
parent_product:
type: string
parent_event:
type: string
parent_record_type:
type: string
Participant:
type: object
title: Participant
required:
- record_type
- id
- call_leg_id
- call_control_id
- conference
- whisper_call_control_ids
- created_at
- updated_at
- end_conference_on_exit
- soft_end_conference_on_exit
- status
- muted
- on_hold
properties:
record_type:
type: string
enum:
- participant
example: participant
id:
type: string
description: Uniquely identifies the participant
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
call_leg_id:
type: string
description: Uniquely identifies the call leg associated with the participant
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
call_control_id:
type: string
description: Call Control ID associated with the partiipant of the conference
example: v2:v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ
conference:
type: object
description: Info about the conference that the participant is in
properties:
id:
type: string
description: Uniquely identifies the conference
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name:
type: string
description: Name of the conference
example: All hands meeting
whisper_call_control_ids:
description: Array of unique call_control_ids the participant can whisper to..
example:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
type: array
items:
type: string
created_at:
type: string
description: ISO 8601 formatted date of when the participant was created
example: '2019-01-23T18:10:02.574Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the participant was last updated
example: '2019-01-23T18:10:02.574Z'
end_conference_on_exit:
type: boolean
description: Whether the conference will end and all remaining participants be hung up after the participant leaves
the conference.
example: true
soft_end_conference_on_exit:
type: boolean
description: Whether the conference will end after the participant leaves the conference.
example: true
status:
type: string
enum:
- joining
- joined
- left
description: The status of the participant with respect to the lifecycle within the conference
example: joining
muted:
type: boolean
description: Whether the participant is muted.
example: true
on_hold:
type: boolean
description: Whether the participant is put on_hold.
example: true
example:
record_type: participant
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
end_conference_on_exit: true
soft_end_conference_on_exit: true
status: joining
muted: false
on_hold: true
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
whisper_call_control_ids:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
id: dfadada7-af74-47bc-83a4-554275f55f5c
call_leg_id: 3a15df2d-c801-4729-adf5-b56dd42e2abb
conference:
id: 41b9acd4-f4da-4ff5-a85c-e07e90b53f46
name: '1'
ParticipantResource:
type: object
title: Participant resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
api_version: v2/texml
call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
call_sid_legacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching: false
conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
end_conference_on_exit: false
hold: false
muted: false
status: completed
uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
api_version:
type: string
description: The version of the API that was used to make the request.
example: v2/texml
call_sid:
type: string
description: The identifier of this participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
call_sid_legacy:
type: string
description: The identifier of this participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching:
type: boolean
description: Whether the participant is coaching another call.
example: false
coaching_call_sid:
type: string
description: The identifier of the coached participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching_call_sid_legacy:
type: string
description: The identifier of the coached participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
end_conference_on_exit:
type: boolean
description: Whether the conference ends when the participant leaves.
example: false
hold:
type: boolean
description: Whether the participant is on hold.
example: false
muted:
type: boolean
description: Whether the participant is muted.
example: false
status:
type: string
description: The status of the participant's call in the conference.
enum:
- connecting
- connected
- completed
example: connected
uri:
type: string
description: The relative URI for this participant.
example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
conference_sid:
type: string
format: uuid
description: The unique identifier for the conference.
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
ParticipantResourceIndex:
type: object
title: Multiple participant resources
example:
participants: []
end: 0
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20
page: 0
page_size: 20
start: 0
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20
properties:
participants:
type: array
items:
$ref: '#/components/schemas/ParticipantResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: 19
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=0&PageSize=1
PatchRoomRequest:
type: object
properties:
unique_name:
description: The unique (within the Telnyx account scope) name of the room.
type: string
example: My room
max_participants:
description: The maximum amount of participants allowed in a room. If new participants try to join after that limit
is reached, their request will be rejected.
type: integer
example: 10
default: 10
minimum: 2
maximum: 50
enable_recording:
description: Enable or disable recording for that room.
type: boolean
example: true
default: false
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type: string
format: uri
description: The failover URL where webhooks related to this room will be sent if sending to the primary URL fails.
Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type: integer
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
PatchWabaSettingsRequest:
type: object
properties:
name:
type: string
timezone:
type: string
description: IANA timezone identifier
example: America/New_York
webhook_url:
type: string
format: url
description: URL to send Whatsapp events
webhook_failover_url:
type: string
format: url
description: Failover URL to send Whatsapp events
webhook_enabled:
type: boolean
description: Enable/disable receiving Whatsapp events
webhook_events:
type: array
items:
type: string
description: Whatsapp event to subscribe to
PatchWhatsappUserDataRequest:
type: object
properties:
webhook_url:
type: string
format: url
description: URL to send Whatsapp signup events
webhook_failover_url:
type: string
format: url
description: Failover URL to send Whatsapp signup events
PauseConferenceRecordingRequest:
type: object
title: Pause Recording Request
properties:
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id:
description: Use this field to pause specific recording.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
region:
$ref: '#/components/schemas/ConferenceRegion'
PauseRecordingRequest:
type: object
title: Pause Recording Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id:
description: Uniquely identifies the resource.
type: string
format: uuid
example: 6e00ab49-9487-4364-8ad6-23965965afb2
PayConnector:
type: object
description: Organization-owned connector. Examples and config properties here describe generic connectors; listing
is not restricted to that type unless filter[type]=generic is supplied. Passwords and bearer tokens are omitted, not
masked. Defaults for auth_type and timeout need not appear in stored config.
properties:
id:
type: string
description: Connector identifier.
format: uuid
name:
type: string
description: Connector name used for retrieval, update, deletion and Pay.
record_type:
type: string
description: Resource type.
enum:
- pay_connector
user_id:
type: string
description: Creating user; assigned from authentication, not request input.
organization_id:
type: string
description: Owning organization; assigned from authentication, not request input.
type:
type: string
description: Connector type; generic is covered by this reference. Other types may appear in unfiltered lists.
mode:
type: string
enum:
- test
- live
description: Configured mode.
config:
type: object
description: Redacted stored configuration. Generic connector fields are shown here. Unknown config keys are discarded.
Password and token are never returned.
properties:
endpoint_url:
type: string
description: HTTP or HTTPS processor URL with a host. Use HTTPS to protect payment data in transit.
pattern: ^https?://\S+
example: https://processor.example.com/pay
auth_type:
type: string
description: Stored processor authentication selection. Omitted if it was not explicitly configured.
enum:
- none
- basic
- bearer
username:
description: Stored username, when supplied. Required to be a nonblank string for basic authentication.
timeout:
type: integer
minimum: 1
maximum: 4294967295
description: Stored processor HTTP timeout in milliseconds. Omitted when no timeout was configured; the effective
runtime default is 10000.
created_at:
type: string
description: Creation time.
format: date-time
updated_at:
type: string
description: Last update time.
format: date-time
PayConnectorErrors:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
description: Telnyx error code.
title:
type: string
description: Error title.
detail:
type: string
description: Error detail.
source:
type: object
properties:
pointer:
type: string
description: Invalid field pointer.
PayConnectorListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PayConnector'
meta:
type: object
description: Cursor pagination metadata. No total_count, page_count or page_number is returned.
properties:
page_size:
type: integer
description: Page size.
start_cursor:
type:
- string
- 'null'
description: Cursor for requesting the preceding page.
end_cursor:
type:
- string
- 'null'
description: Cursor for requesting the following page.
PayConnectorResponse:
type: object
properties:
data:
$ref: '#/components/schemas/PayConnector'
PayPrompt:
type: object
title: Pay Prompt
description: A text-to-speech prompt with optional matching qualifiers.
required:
- text
properties:
text:
type: string
minLength: 1
description: Text spoken for the payment collection step.
example: Please enter your card number.
attempt:
type: string
description: Space-separated 1-based attempt numbers for which this prompt applies.
example: 2 3
error_type:
type: string
description: Step error for which this prompt applies.
enum:
- timeout
- invalid-card-number
- invalid-card-type
- invalid-date
- invalid-security-code
- invalid-postal-code
- invalid-bank-routing-number
- invalid-bank-account-number
- input-matching-failed
example: invalid-card-number
card_type:
type: string
description: Lowercase, case-sensitive detected card type for which this prompt applies.
enum:
- visa
- mastercard
- amex
- optima
- discover
- diners-club
- jcb
- maestro
- enroute
example: amex
additionalProperties: false
PayPromptValue:
title: Pay Prompt Value
description: A default prompt string or an ordered list of qualified prompts.
oneOf:
- type: string
minLength: 1
- type: array
minItems: 1
items:
$ref: '#/components/schemas/PayPrompt'
PayPrompts:
type: object
title: Pay Prompts
description: Custom text-to-speech prompts keyed by payment collection step.
properties:
payment-card-number:
$ref: '#/components/schemas/PayPromptValue'
expiration-date:
$ref: '#/components/schemas/PayPromptValue'
postal-code:
$ref: '#/components/schemas/PayPromptValue'
security-code:
$ref: '#/components/schemas/PayPromptValue'
bank-routing-number:
$ref: '#/components/schemas/PayPromptValue'
bank-account-number:
$ref: '#/components/schemas/PayPromptValue'
additionalProperties: false
example:
payment-card-number:
- text: Please enter your card number.
- text: That card number was not accepted. Please try again.
attempt: 2 3
error_type: invalid-card-number
PayRequest:
type: object
title: Pay Request
properties:
connector_name:
type: string
default: Default
description: Name of the Pay connector used to process the transaction.
example: Default
amount:
type: number
minimum: 0
description: Amount to charge. Required when `transaction_type` is `charge`.
example: 10.5
currency:
type: string
default: USD
enum:
- USD
- usd
description: Currency used for the transaction. Pay currently supports USD only.
example: USD
payment_token:
type: string
description: Existing payment token. When supplied, payment-detail collection is skipped.
example: tok_abc123
payment_method:
type: string
default: credit-card
enum:
- credit-card
- ach-debit
description: Payment method to collect.
valid_card_types:
type: array
items:
type: string
enum:
- visa
- mastercard
- amex
- maestro
- discover
- optima
- jcb
- diners-club
- enroute
minItems: 1
description: Restricts accepted card numbers to the listed card types. When the caller enters a card number that
does not match one of the listed types, Pay treats the input as invalid and re-prompts for the card number. Cannot
be used together with `payment_token`.
example:
- visa
- mastercard
postal_code:
oneOf:
- type: string
minLength: 1
pattern: \S
- type: boolean
default: 'true'
description: Controls billing postal code collection for credit-card payments when no `payment_token` is supplied.
Set to `true` or the string `"true"` (the default) to prompt the caller for a postal code. Set to `false` or the
string `"false"` to skip the postal code prompt without supplying a postal code to the payment connector. Supply
any other non-empty string, such as `"90210"`, to use that postal code without prompting. Empty or whitespace-only
strings are rejected. This option does not affect ACH debit payments or payments using an existing token.
example: false
min_postal_code_length:
type: integer
minimum: 1
maximum: 128
default: 1
description: Minimum number of digits the caller must enter when collecting a credit-card billing postal code. Applies
only when `postal_code` is `true` or `"true"` and no `payment_token` is supplied. The default is 1. The maximum
number of digits collected is the greater of 10 and this value. This does not validate the length of a postal
code supplied directly in `postal_code`.
example: 5
transaction_type:
type: string
enum:
- charge
- tokenize
description: Transaction to perform. If omitted, Pay infers `tokenize` when `amount` is absent or zero and `charge`
when `amount` is positive.
description:
type: string
description: Optional description forwarded with the payment transaction.
example: Order 12345
client_state:
type: string
description: Base64-encoded state included in subsequent webhooks.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
metadata:
type: object
description: Metadata forwarded to the Pay connector.
additionalProperties: true
example:
order_id: ORD-12345
parameters:
type: object
description: Additional parameters forwarded to the Pay connector.
additionalProperties: true
example:
customer_id: CUST-67890
prompts:
$ref: '#/components/schemas/PayPrompts'
max_attempts:
type: integer
format: int32
minimum: 1
maximum: 3
default: 3
description: Maximum number of attempts for each payment collection step.
timeout_millis:
type: integer
format: int32
minimum: 1
maximum: 600000
default: 5000
description: Time in milliseconds to wait for DTMF input for each collection step.
inter_digit_timeout_millis:
type: integer
format: int32
minimum: 1
maximum: 600000
default: 5000
description: Time in milliseconds to wait between consecutive DTMF digits.
voice:
type: string
default: female
description: Voice used for payment prompts. Accepts `male`, `female`, or a provider voice in `..`
format, for example `AWS.Polly.Joanna` or `Telnyx.KokoroTTS.af`.
example: female
language:
type: string
default: en-US
description: Language used for payment prompts.
example: en-US
service_level:
type: string
default: premium
description: Speech synthesis service level used for payment prompts. Pay defaults to `premium`.
command_id:
type: string
description: Idempotency key for the command. Telnyx ignores a duplicate command with the same `command_id` for
the same `call_control_id`.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
connector_name: Default
amount: 10.5
currency: USD
payment_method: credit-card
transaction_type: charge
max_attempts: 3
timeout_millis: 5000
inter_digit_timeout_millis: 5000
voice: female
language: en-US
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
PayTool:
description: (BETA) The pay tool allows the assistant to collect card payments from the caller via DTMF during the conversation.
Recording is automatically paused while the pay tool is active and resumes when the payment flow completes. The connector_name
must reference a pay connector configured in the Telnyx API.
properties:
type:
type: string
enum:
- pay
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
pay:
$ref: '#/components/schemas/PayToolParams'
type: object
required:
- type
- pay
title: PayTool
PayToolParams:
properties:
connector_name:
type: string
description: The name of the pay connector configured in the Telnyx API. Must reference an existing pay connector
for this organization.
currency:
type: string
default: USD
description: Default currency for payments processed by this tool.
payment_method:
type: string
default: credit-card
description: Default payment method for payments processed by this tool.
description:
type:
- string
- 'null'
default: null
description: Description of the pay tool shown to the assistant so it knows when to call the tool. Not sent to the
payment connector — the per-call `description` argument the assistant passes is what reaches the processor.
connector_parameters:
type: object
additionalProperties: true
description: Custom key/value parameters forwarded to the pay connector as `parameters` in the processor request.
String values may use `{{dynamic_variable}}` templating, resolved per call.
example:
campaignid: abc
customer_ref: CUST-67890
valid_card_types:
type: array
items:
type: string
enum:
- visa
- mastercard
- amex
- maestro
- discover
- optima
- jcb
- diners-club
- enroute
minItems: 1
description: Restricts accepted card numbers to the listed card types. When the caller enters a card number that
does not match one of the listed types, Pay treats the input as invalid and re-prompts for the card number.
example:
- visa
- mastercard
required:
- connector_name
type: object
title: PayToolParams
PhoneNumber:
properties:
id:
type: string
format: uuid
example: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
readOnly: true
record_type:
type: string
example: number_order_phone_number
readOnly: true
phone_number:
type: string
example: '+19705555098'
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the phone number.
example: US
readOnly: true
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/SubNumberOrderRegulatoryRequirementWithValue'
requirements_met:
type: boolean
description: True if all requirements are met for a phone number, false otherwise.
example: true
readOnly: true
requirements_status:
type: string
enum:
- pending
- approved
- cancelled
- deleted
- requirement-info-exception
- requirement-info-pending
- requirement-info-under-review
description: Status of document requirements (if applicable)
readOnly: true
status:
type: string
enum:
- pending
- success
- failure
description: The status of the phone number in the order.
readOnly: true
bundle_id:
type: string
format: uuid
example: bc8e4d67-33a0-4cbb-af74-7b58f05bd494
readOnly: true
phone_number_type:
type: string
enum:
- local
- mobile
- national
- shared_cost
- toll_free
description: Phone number type
readOnly: true
country_code:
type: string
example: US
description: Country code of the phone number
readOnly: true
example:
id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
record_type: number_order_phone_number
phone_number: '+19705555098'
bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd474
regulatory_requirements:
- record_type: phone_number_regulatory_requirement
requirement_id: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_value: 45f45a04-b4be-4592-95b1-9306b9db2b21
field_type: address
requirements_met: true
status: success
type: object
PhoneNumberBatch:
type: object
description: A phone-number batch groups all numbers added in a single bulk-add request. Telnyx vets the batch as a
unit. The response embeds the full `phone_numbers` array so you can read per-number status without a separate call,
plus a batch-level `status` summarising the unit's progress.
properties:
batch_id:
type: string
format: uuid
example: ba74cfc6-d32b-467a-9b08-86fd154c23f7
readOnly: true
dir_id:
type: string
format: uuid
example: 74e1d8ed-fbdb-45a7-bbb0-a09c1184eb3d
dir_display_name:
type: string
description: The DIR's display name at the time the batch was read.
example: Acme Plumbing
readOnly: true
enterprise_id:
type: string
format: uuid
example: 5c987b82-2e3b-442a-afbc-0ba3c515f561
status:
$ref: '#/components/schemas/PhoneNumberStatus'
description: Aggregate batch status. Mirrors the values used on individual phone numbers (`submitted`, `in_review`,
`verified`, `unsuccessful`, `permanently_rejected`, etc.).
total_count:
type: integer
description: Number of phone numbers in this batch (length of `phone_numbers`).
example: 1
readOnly: true
submitted_at:
type: string
format: date-time
description: When the batch was created (and implicitly submitted for vetting).
example: '2026-04-26T18:14:37.065870Z'
readOnly: true
documents:
type: array
items:
$ref: '#/components/schemas/Document'
description: Documents attached to this batch (e.g. a Letter of Authorization). Empty when none were supplied at
add time.
phone_numbers:
type: array
items:
$ref: '#/components/schemas/DirPhoneNumber'
description: All phone numbers in this batch, with per-number status.
PhoneNumberBatchList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumberBatch'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
PhoneNumberBatchWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/PhoneNumberBatch'
PhoneNumberBlocksJob:
type: object
properties:
id:
type: string
format: uuid
example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
description: Identifies the resource.
readOnly: true
record_type:
type: string
example: phone_number_block_job
description: Identifies the type of the resource.
readOnly: true
status:
type: string
enum:
- pending
- in_progress
- completed
- failed
default: pending
example: pending
description: Indicates the completion status of the background operation.
readOnly: true
type:
type: string
enum:
- delete_phone_number_block
example: delete_phone_number_block
description: Identifies the type of the background job.
readOnly: true
etc:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the estimated time of completion of the background job.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
successful_operations:
type: array
items:
description: The phone numbers successfully updated.
$ref: '#/components/schemas/PhoneNumberBlocksJobSuccessfulOperation'
readOnly: true
failed_operations:
type: array
items:
$ref: '#/components/schemas/PhoneNumberBlocksJobFailedOperation'
readOnly: true
example:
id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
record_type: phone_numbers_job
status: pending
type: delete_phone_number_block
etc: '2020-10-30T18:10:00.000Z'
created_at: '2020-10-23T18:10:00.000Z'
updated_at: '2020-10-23T18:10:01.000Z'
successful_operations: []
failed_operations: []
PhoneNumberBlocksJobDeletePhoneNumberBlockRequest:
type: object
required:
- phone_number_block_id
properties:
phone_number_block_id:
type: string
example:
phone_number_block_id: f3946371-7199-4261-9c3d-81a0d7935146
PhoneNumberBlocksJobFailedOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
errors:
type: array
items:
$ref: '#/components/schemas/numbers_Error'
type: object
PhoneNumberBlocksJobSuccessfulOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
type: object
PhoneNumberBulkDeleteResponse:
type: object
description: Bulk-delete partial-success response. `data` is the list of phone numbers that were soft-deleted. `meta.errors`
holds per-number failures (e.g. number not associated with this DIR). When EVERY number in the request fails, the
endpoint instead returns 400 with the canonical Telnyx error envelope and `data`/`meta` are absent.
required:
- data
- meta
properties:
data:
type: array
items:
type: string
example: '+19493253498'
description: Phone numbers that were successfully soft-deleted. Bare E.164 strings.
meta:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/PhoneNumberItemError'
description: Per-number failures that did not block the call. Each entry has `phone_number`, `code`, `title`,
`detail`.
PhoneNumberBulkResponse:
type: object
description: Bulk-add success response (HTTP 201). All numbers in the request were accepted into a single new batch.
Every entry in `data` shares the same `batch_id` - read it from any element to obtain the batch id for subsequent
`GET .../phone_number_batches/{batch_id}` calls. If any number in the request fails (schema-invalid, not in inventory,
already attached to another DIR, etc.) the entire request is rejected with HTTP 400 and the canonical Telnyx error
envelope; the success body described here is therefore an all-or-nothing payload.
required:
- data
properties:
data:
type: array
description: Phone numbers accepted into the new batch. List order mirrors the request order. Each element shares
the same `batch_id`.
items:
$ref: '#/components/schemas/DirPhoneNumber'
PhoneNumberBundleStatusChangeRequest:
type: object
required:
- bundle_id
properties:
bundle_id:
type:
- string
- 'null'
description: The new bundle_id setting for the number. If you are assigning the number to a bundle, this is the
unique ID of the bundle you wish to use. If you are removing the number from a bundle, this must be null. You
cannot assign a number from one bundle to another directly. You must first remove it from a bundle, and then assign
it to a new bundle.
example:
bundle_id: 5194d8fc-87e6-4188-baa9-1c434bbe861b
PhoneNumberCampaign:
title: PhoneNumberCampaign
required:
- phoneNumber
- campaignId
- createdAt
- updatedAt
type: object
properties:
phoneNumber:
title: Phonenumber
type: string
example: '+18005550199'
brandId:
description: Brand ID. Empty if the number is associated to a shared campaign.
title: BrandId
type: string
example: 7ba705b7-22af-493f-addc-ac04b7ca071c
tcrBrandId:
description: TCR's alphanumeric ID for the brand.
title: TcrBrandId
type: string
example: BBRAND1
campaignId:
description: 'For shared campaigns, this is the TCR campaign ID, otherwise it is the campaign ID '
title: Campaignid
type: string
tcrCampaignId:
description: TCR's alphanumeric ID for the campaign.
title: TcrCampaignid
type: string
example: CCAMPA1
telnyxCampaignId:
description: Campaign ID. Empty if the number is associated to a shared campaign.
title: Telnyxcampaignid
type: string
example: 3008dd9f-66d7-40e0-bf23-bf2d8d1a96ba
assignmentStatus:
description: The assignment status of the number.
title: AssignmentStatus
enum:
- FAILED_ASSIGNMENT
- PENDING_ASSIGNMENT
- ASSIGNED
- PENDING_UNASSIGNMENT
- FAILED_UNASSIGNMENT
example: ASSIGNED
type: string
tmobileNumberMappingStatus:
description: The T-Mobile assignment status of the number.
title: TMobileNumberMappingStatus
type: string
example: ADDED
nonTmobileNumberMappingStatus:
description: The assignment status of the number towards other carriers.
title: NonTMobileNumberMappingStatus
type: string
example: ADDED
failureReasons:
description: Extra info about a failure to assign/unassign a number. Relevant only if the assignmentStatus is either
FAILED_ASSIGNMENT or FAILED_UNASSIGNMENT
type: string
createdAt:
title: Createdat
type: string
example: '2021-03-08T17:57:48.801186'
updatedAt:
title: Updatedat
type: string
example: '2021-03-08T17:57:48.801186'
PhoneNumberCampaignCreate:
title: PhoneNumberCampaignCreate
required:
- phoneNumber
- campaignId
type: object
properties:
phoneNumber:
title: Phonenumber
type: string
description: The phone number you want to link to a specified campaign.
example: '+18005550199'
campaignId:
title: Campaignid
type: string
description: The ID of the campaign you want to link to the specified phone number.
example: 4b300178-131c-d902-d54e-72d90ba1620j
PhoneNumberCampaignPaginated:
title: PhoneNumberCampaignPaginated
required:
- records
- page
- totalRecords
type: object
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/PhoneNumberCampaign'
page:
title: Page
type: integer
totalRecords:
title: Totalrecords
type: integer
PhoneNumberDeletedDetailed:
type: object
example:
id: '1293384261075731499'
record_type: phone_number
phone_number: '+19705555098'
status: deleted
tags:
- tag_1
- tag_2
external_pin: '1234'
connection_id: '1293384261075731499'
connection_name: connection-name
customer_reference: customer-reference
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
messaging_profile_name: regional-customers
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
emergency_enabled: true
emergency_address_id: '1315261609962112019'
call_forwarding_enabled: true
cnam_listing_enabled: true
caller_id_name_enabled: true
call_recording_enabled: true
t38_fax_gateway_enabled: true
phone_number_type: local
purchased_at: '2019-10-23T18:10:00.000Z'
created_at: '2019-10-23T18:10:00.000Z'
updated_at: '2019-10-24T18:10:00.000Z'
hd_voice_enabled: true
deletion_lock_enabled: false
activated_at: '2019-10-23T18:10:00.000Z'
properties:
id:
$ref: '#/components/schemas/numbers_IntId'
record_type:
type: string
example: phone_number
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number associated with this record.
readOnly: true
status:
type: string
description: The phone number's current status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- port-failed
- active
- deleted
- emergency-only
- ported-out
- port-out-pending
readOnly: true
tags:
type: array
description: A list of user-assigned tags to help manage the phone number.
items:
type: string
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note
that not all carriers cooperate with this security mechanism.
connection_name:
type: string
description: The user-assigned name of the connection to be associated with this phone number.
readOnly: true
connection_id:
type: string
description: Identifies the connection associated with the phone number.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
messaging_profile_id:
type: string
description: Identifies the messaging profile associated with the phone number.
messaging_profile_name:
type: string
description: The name of the messaging profile associated with the phone number.
example: regional-customers
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
emergency_enabled:
type: boolean
description: Indicates whether emergency services are enabled for this number.
readOnly: true
emergency_address_id:
type: string
description: Identifies the emergency address associated with the phone number.
readOnly: true
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
cnam_listing_enabled:
type: boolean
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
caller_id_name_enabled:
type: boolean
description: Indicates whether caller ID is enabled for this number.
readOnly: true
call_recording_enabled:
type: boolean
description: Indicates whether call recording is enabled for this number.
readOnly: true
t38_fax_gateway_enabled:
type: boolean
description: Indicates whether T38 Fax Gateway for inbound calls to this number.
readOnly: true
purchased_at:
type: string
description: ISO 8601 formatted date indicating the time the request was made to purchase the number.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the time it took to activate after the purchase.
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
readOnly: true
phone_number_type:
type: string
description: The phone number's type.
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
readOnly: true
deletion_lock_enabled:
type: boolean
description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number
from being deleted via the API or Telnyx portal.
readOnly: true
activated_at:
description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending
or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated
before this field was tracked.
anyOf:
- type: string
format: date-time
- type: 'null'
readOnly: true
PhoneNumberDetailed:
type: object
example:
id: '1293384261075731499'
record_type: phone_number
phone_number: '+19705555098'
country_iso_alpha2: US
status: active
tags:
- tag_1
- tag_2
external_pin: '1234'
connection_id: '1293384261075731499'
connection_name: connection-name
customer_reference: customer-reference
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
messaging_profile_name: regional-customers
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
emergency_enabled: true
emergency_address_id: '1315261609962112019'
emergency_status: active
call_forwarding_enabled: true
cnam_listing_enabled: true
caller_id_name_enabled: true
call_recording_enabled: true
t38_fax_gateway_enabled: true
phone_number_type: local
inbound_call_screening: disabled
purchased_at: '2019-10-23T18:10:00.000Z'
created_at: '2019-10-23T18:10:00.000Z'
updated_at: '2019-10-24T18:10:00.000Z'
hd_voice_enabled: true
source_type: number_order
deletion_lock_enabled: false
activated_at: '2019-10-23T18:10:00.000Z'
properties:
id:
$ref: '#/components/schemas/numbers_IntId'
record_type:
type: string
example: phone_number
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number associated with this record.
readOnly: true
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the phone number.
example: US
readOnly: true
status:
type: string
description: The phone number's current status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- port-failed
- active
- deleted
- emergency-only
- ported-out
- port-out-pending
- requirement-info-pending
- requirement-info-under-review
- requirement-info-exception
- provision-pending
readOnly: true
tags:
type: array
description: A list of user-assigned tags to help manage the phone number.
items:
type: string
external_pin:
type:
- string
- 'null'
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note
that not all carriers cooperate with this security mechanism.
connection_name:
type:
- string
- 'null'
description: The user-assigned name of the connection to be associated with this phone number.
readOnly: true
connection_id:
type:
- string
- 'null'
description: Identifies the connection associated with the phone number.
customer_reference:
type:
- string
- 'null'
description: A customer reference string for customer look ups.
example: MY REF 001
messaging_profile_id:
type:
- string
- 'null'
description: Identifies the messaging profile associated with the phone number.
messaging_profile_name:
type:
- string
- 'null'
description: The name of the messaging profile associated with the phone number.
example: regional-customers
billing_group_id:
type:
- string
- 'null'
description: Identifies the billing group associated with the phone number.
emergency_enabled:
type: boolean
description: Indicates whether emergency services are enabled for this number.
readOnly: true
emergency_address_id:
type:
- string
- 'null'
description: Identifies the emergency address associated with the phone number.
readOnly: true
emergency_status:
type: string
description: Indicates the status of the provisioning of emergency services for the phone number. This field contains
information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned
but is not yet enabled/disabled.
enum:
- active
- deprovisioning
- disabled
- provisioning
- provisioning-failed
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
cnam_listing_enabled:
type: boolean
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
caller_id_name_enabled:
type: boolean
description: Indicates whether caller ID is enabled for this number.
readOnly: true
call_recording_enabled:
type: boolean
description: Indicates whether call recording is enabled for this number.
readOnly: true
t38_fax_gateway_enabled:
type: boolean
description: Indicates whether T38 Fax Gateway for inbound calls to this number.
readOnly: true
purchased_at:
type: string
description: ISO 8601 formatted date indicating when the resource was purchased.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
format: date-time
phone_number_type:
type: string
description: 'The phone number''s type.
Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase
completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.'
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
- tollfree
- shortcode
- longcode
readOnly: true
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users
to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls.
This feature has an additional per-number monthly cost associated with it.
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
readOnly: true
source_type:
description: Indicates if the phone number was purchased or ported in. For some numbers this information may not
be available.
anyOf:
- type: string
enum:
- number_order
- port_request
- type: 'null'
readOnly: true
deletion_lock_enabled:
type: boolean
description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number
from being deleted via the API or Telnyx portal.
activated_at:
description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending
or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated
before this field was tracked.
anyOf:
- type: string
format: date-time
- type: 'null'
readOnly: true
required:
- id
- record_type
- phone_number
- country_iso_alpha2
- status
- tags
- external_pin
- created_at
- phone_number_type
- purchased_at
- deletion_lock_enabled
PhoneNumberEnableEmergencyRequest:
type: object
required:
- emergency_enabled
- emergency_address_id
properties:
emergency_enabled:
type: boolean
description: Indicates whether to enable emergency services on this number.
emergency_address_id:
type: string
description: Identifies the address to be used with emergency services.
example:
emergency_enabled: true
emergency_address_id: '53829456729313'
PhoneNumberItemError:
type: object
description: Per-number error returned by the bulk-delete endpoint. Bulk-add does not use this shape - it returns a
400 with the canonical envelope grouping numbers by failure category.
required:
- phone_number
- code
- title
- detail
properties:
phone_number:
type: string
example: '+19493253498'
code:
type: string
enum:
- not_associated
description: Stable per-number error code. Currently only `not_associated` is emitted, when the number is not attached
to this DIR.
example: not_associated
title:
type: string
example: Phone number not associated
detail:
type: string
example: Phone number not associated with this DIR.
PhoneNumberList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/DirPhoneNumber'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
PhoneNumberStatus:
type: string
enum:
- submitted
- in_review
- verified
- unsuccessful
- suspended
- expired
- permanently_rejected
description: 'Phone-number lifecycle status.
- `submitted` / `in_review` - Telnyx is reviewing the batch this number belongs to.
- `verified` - approved; the DIR''s display identity will be shown on outbound calls from this number.
- `unsuccessful` - Telnyx rejected this submission; the customer may re-add to retry.
- `suspended` - temporarily disabled (e.g. by an active infringement claim on the DIR).
- `expired` - verification expired; re-add to renew.
- `permanently_rejected` - terminal; cannot be re-added on this or any other DIR you own.'
PhoneNumberStatusResponsePaginated:
title: PhoneNumberStatusResponsePaginated
required:
- records
type: object
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/ProfileAssignmentPhoneNumbers'
PhoneNumberVerifyOwnershipRequest:
type: object
required:
- phone_numbers
properties:
phone_numbers:
type: array
description: Array of phone numbers to verify ownership for
items:
type: string
description: Phone number in E.164 format
example: '+15551234567'
minItems: 1
maxItems: 1000
PhoneNumberVerifyOwnershipResponse:
type: object
properties:
found:
type: array
description: The list of phone numbers which you own and are in an editable state
items:
type: object
properties:
number_val_e164:
type: string
description: The phone number in E.164 format
example: '+15551234567'
id:
$ref: '#/components/schemas/numbers_IntId'
not_found:
type: array
description: Phone numbers that are not found in the account
items:
type: string
description: Phone number in E.164 format
example: '+15551234568'
record_type:
type: string
example: number_ownership_verification
description: Identifies the type of the resource.
readOnly: true
PhoneNumberWithMessagingSettings:
type: object
example:
record_type: messaging_settings
id: '1293384261075731499'
phone_number: '+18005550001'
messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
country_code: US
type: tollfree
health:
message_count: 122
inbound_outbound_ratio: 0.43
success_ratio: 0.94
spam_ratio: 0.06
eligible_messaging_products:
- A2P
traffic_type: A2P
messaging_product: A2P
features:
sms:
domestic_two_way: true
international_inbound: true
international_outbound: true
mms: null
properties:
record_type:
type: string
example: messaging_settings
enum:
- messaging_phone_number
- messaging_settings
description: Identifies the type of the resource.
readOnly: true
id:
type: string
description: Identifies the type of resource.
readOnly: true
phone_number:
type: string
description: +E.164 formatted phone number.
readOnly: true
x-format: e164
messaging_profile_id:
type:
- string
- 'null'
description: Unique identifier for a messaging profile.
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
country_code:
type: string
description: ISO 3166-1 alpha-2 country code.
pattern: ^[A-Z]{2}$
example: US
readOnly: true
type:
type: string
description: The type of the phone number
enum:
- long-code
- toll-free
- short-code
- longcode
- tollfree
- shortcode
readOnly: true
health:
$ref: '#/components/schemas/NumberHealthMetrics'
eligible_messaging_products:
type: array
description: The messaging products that this number can be registered to use
readOnly: true
items:
type: string
traffic_type:
type: string
description: The messaging traffic or use case for which the number is currently configured.
example: P2P
readOnly: true
messaging_product:
type: string
description: The messaging product that the number is registered to use
example: P2P
features:
type: object
readOnly: true
properties:
sms:
$ref: '#/components/schemas/MessagingFeatureSet'
mms:
$ref: '#/components/schemas/MessagingFeatureSet'
organization_id:
type: string
description: The organization that owns this phone number.
tags:
type: array
items:
type: string
description: Tags associated with this phone number.
PhoneNumberWithVoiceSettings:
type: object
properties:
id:
type: string
example: '1293384261075731499'
description: Identifies the type of resource.
readOnly: true
record_type:
type: string
example: voice_settings
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
example: '+13035551234'
description: The phone number in +E164 format.
readOnly: true
connection_id:
type: string
example: 1d0e6cb8-8668-462e-94c6-49ae0f0ed48b
description: Identifies the connection associated with this phone number.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
tech_prefix_enabled:
type: boolean
default: false
example: false
description: Controls whether a tech prefix is enabled for this phone number.
translated_number:
type: string
example: '+13035559999'
default: ''
description: This field allows you to rewrite the destination number of an inbound call before the call is routed
to you. The value of this field may be any alphanumeric value, and the value will replace the number originally
dialed.
call_forwarding:
$ref: '#/components/schemas/CallForwarding'
cnam_listing:
$ref: '#/components/schemas/CnamListing'
emergency:
$ref: '#/components/schemas/EmergencySettings'
usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
default: pay-per-minute
example: pay-per-minute
description: Controls whether a number is billed per minute or uses your concurrent channels.
media_features:
$ref: '#/components/schemas/MediaFeatures'
call_recording:
$ref: '#/components/schemas/CallRecording'
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users
to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls.
This feature has an additional per-number monthly cost associated with it.
example:
id: '1293384261075731499'
record_type: voice_settings
connection_id: 1d0e6cb8-8668-462e-94c6-49ae0f0ed48b
customer_reference: customer-reference
tech_prefix_enabled: false
translated_number: '+13035559999'
call_forwarding:
call_forwarding_enabled: true
forwards_to: '+13035559123'
forwarding_type: always
cnam_listing:
cnam_listing_enabled: true
cnam_listing_details: example
emergency:
emergency_enabled: true
emergency_address_id: '1315261609962112019'
emergency_status: active
usage_payment_method: pay-per-minute
media_features:
rtp_auto_adjust_enabled: true
accept_any_rtp_packets_enabled: true
t38_fax_gateway_enabled: true
call_recording:
inbound_call_recording_enabled: true
inbound_call_recording_format: wav
inbound_call_recording_channels: single
inbound_call_screening: disabled
PhoneNumbersJob:
type: object
properties:
id:
type: string
format: uuid
example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
description: Identifies the resource.
readOnly: true
record_type:
type: string
example: phone_numbers_job
description: Identifies the type of the resource.
readOnly: true
status:
type: string
enum:
- pending
- in_progress
- completed
- failed
- expired
default: pending
example: pending
description: Indicates the completion status of the background update.
readOnly: true
type:
type: string
enum:
- update_emergency_settings
- delete_phone_numbers
- update_phone_numbers
example: update_emergency_settings
description: Identifies the type of the background job.
readOnly: true
etc:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the estimated time of completion of the background job.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
phone_numbers:
type: array
items:
description: The unique phone numbers given as arguments in the job creation.
$ref: '#/components/schemas/PhoneNumbersJobPhoneNumber'
successful_operations:
type: array
items:
description: The phone numbers successfully updated.
$ref: '#/components/schemas/PhoneNumbersJobSuccessfulOperation'
readOnly: true
pending_operations:
type: array
items:
description: The phone numbers pending confirmation on update results. Entries in this list are transient, and
will be moved to either successful_operations or failed_operations once the processing is done.
$ref: '#/components/schemas/PhoneNumbersJobPendingOperation'
readOnly: true
failed_operations:
type: array
items:
$ref: '#/components/schemas/PhoneNumbersJobFailedOperation'
readOnly: true
example:
id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
record_type: phone_numbers_job
status: pending
type: update_emergency_settings
etc: '2020-10-30T18:10:00.000Z'
created_at: '2020-10-23T18:10:00.000Z'
updated_at: '2020-10-23T18:10:01.000Z'
phone_numbers:
- id: '2637816387126861836'
- phone_number: '+19715555098'
- phone_number: '+19705555099'
- id: '3388768018273'
successful_operations:
- id: '2637816387126861836'
phone_number: '+19705555098'
- id: '33081887126861836'
phone_number: '+19715555098'
pending_operations:
- id: '2637816387126861837'
phone_number: '+19705555099'
failed_operations:
- id: '3388768018273'
phone_number: '+19705551234'
errors:
- code: '10015'
title: Bad Request
detail: The field is invalid.
source:
pointer: /emergency_address_id
PhoneNumbersJobDeletePhoneNumbersRequest:
type: object
required:
- phone_numbers
properties:
phone_numbers:
type: array
items:
description: Array of phone number ids and/or phone numbers in E164 format to update
type: string
example:
phone_numbers:
- '+19705555098'
- '+19715555098'
- '32873127836'
PhoneNumbersJobFailedOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
errors:
type: array
items:
$ref: '#/components/schemas/numbers_Error'
type: object
PhoneNumbersJobPendingOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
type: object
PhoneNumbersJobPhoneNumber:
properties:
phone_number:
type: string
description: The phone number in e164 format.
example: '+19705555000'
id:
type: string
description: The phone number's ID
type: object
PhoneNumbersJobSuccessfulOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
type: object
PhoneNumbersJobUpdateEmergencySettingsRequest:
type: object
required:
- emergency_enabled
- phone_numbers
properties:
phone_numbers:
type: array
items:
description: Array of phone number ids and/or phone numbers in E164 format to update
type: string
emergency_enabled:
type: boolean
description: Indicates whether to enable or disable emergency services on the numbers.
emergency_address_id:
type:
- string
- 'null'
description: Identifies the address to be used with emergency services. Required if emergency_enabled is true, must
be null or omitted if emergency_enabled is false.
example:
emergency_enabled: true
emergency_address_id: '53829456729313'
phone_numbers:
- '+19705555098'
- '+19715555098'
- '32873127836'
PhoneNumbersJobUpdatePhoneNumbersRequest:
type: object
required:
- phone_numbers
properties:
phone_numbers:
type: array
description: Array of phone number ids and/or phone numbers in E164 format to update. This parameter is required
if no filter parameters are provided. If you want to update specific numbers rather than all numbers matching
a filter, you must use this parameter. Each item must be either a valid phone number ID or a phone number in E164
format (e.g., '+13127367254').
items:
type: string
tags:
type: array
description: A list of user-assigned tags to help organize phone numbers.
items:
type: string
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that
not all carriers cooperate with this security mechanism.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
connection_id:
type: string
description: Identifies the connection associated with the phone number.
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
hd_voice_enabled:
type: boolean
description: Indicates whether to enable or disable HD Voice on each phone number. HD Voice is a paid feature and
may not be available for all phone numbers, more details about it can be found in the Telnyx support documentation.
deletion_lock_enabled:
type: boolean
description: Indicates whether to enable or disable the deletion lock on each phone number. When enabled, this prevents
the phone number from being deleted via the API or Telnyx portal.
voice:
$ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest'
example:
phone_numbers:
- '1583466971586889004'
- '+13127367254'
tags:
- tag
external_pin: '123456'
customer_reference: customer-reference
connection_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
billing_group_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
deletion_lock_enabled: true
voice:
call_forwarding:
call_forwarding_enabled: true
forwards_to: '+13035559123'
forwarding_type: always
PhysicalAddress:
type: object
required:
- country
- administrative_area
- city
- postal_code
- street_address
properties:
country:
type: string
description: ISO 3166-1 alpha-2 code (currently `US` or `CA`).
example: US
administrative_area:
type: string
description: State or province code (e.g. `IL`, `ON`).
example: IL
city:
type: string
maxLength: 100
description: The city of your registered business address.
example: Chicago
postal_code:
type: string
maxLength: 20
description: The postal or ZIP code of your registered business address.
example: '60601'
street_address:
type: string
maxLength: 255
description: The street address of your registered business, including the building number and street name.
example: 100 Main St
extended_address:
type: string
maxLength: 255
description: An optional second address line, such as a suite, unit, or floor. Leave blank if it does not apply.
example: Suite 504
nullable: true
PlanResponse:
properties:
data:
items:
$ref: '#/components/schemas/PlanStepData'
type: array
title: Data
type: object
required:
- data
title: PlanResponse
PlanStepData:
properties:
step_id:
type: string
title: Step Id
run_id:
type: string
format: uuid
title: Run Id
parent_step_id:
title: Parent Step Id
type: string
sequence:
type: integer
title: Sequence
description:
type: string
title: Description
status:
$ref: '#/components/schemas/StepStatus'
started_at:
title: Started At
type: string
format: date-time
completed_at:
title: Completed At
type: string
format: date-time
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
required:
- step_id
- run_id
- sequence
- description
- status
title: PlanStepData
PlanStepResponse:
properties:
data:
$ref: '#/components/schemas/PlanStepData'
type: object
required:
- data
title: PlanStepResponse
PlanStepsCreatedResponse:
properties:
data:
items:
$ref: '#/components/schemas/PlanStepData'
type: array
title: Data
type: object
required:
- data
title: PlanStepsCreatedResponse
PlayAudioUrlRequest:
type: object
title: Play Audio URL Request
properties:
audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played back on the call. The URL can point to either a WAV or MP3 file. media_name
and audio_url cannot be used together in one request.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played back on the call. The media_name must point to a file previously
uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file.
loop:
description: The number of times the audio file should be played. If supplied, the value must be an integer between
1 and 100, or the special string `infinity` for an endless loop.
$ref: '#/components/schemas/Loopcount'
example: infinity
default: 1
overlay:
description: 'When enabled, audio will be mixed on top of any other audio that is actively being played back. Note
that `overlay: true` will only work if there is another audio file already being played on the call.'
type: boolean
example: true
default: false
stop:
description: When specified, it stops the current audio being played. Specify `current` to stop the current audio
being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played
and to also clear all audio files from the queue.
type: string
example: current
target_legs:
description: Specifies the leg or legs on which audio will be played. If supplied, the value must be either `self`,
`opposite` or `both`.
type: string
default: self
example: self
cache_audio:
description: Caches the audio file. Useful when playing the same audio file multiple times during the call.
type: boolean
default: true
example: true
audio_type:
description: Specifies the type of audio provided in `audio_url` or `playback_content`.
type: string
enum:
- mp3
- wav
default: mp3
example: wav
playback_content:
description: 'Allows a user to provide base64 encoded mp3 or wav. Note: when using this parameter, `media_url` and
`media_name` in the `playback_started` and `playback_ended` webhooks will be empty'
type: string
example: SUQzAwAAAAADf1...
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
audio_url: http://www.example.com/sounds/greeting.wav
loop: infinity
overlay: true
stop: current
target_legs: self
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
PlayBeep:
type: boolean
description: Whether to play a beep when recording is started.
example: false
default: true
PlaybackStopRequest:
type: object
title: Playback Stop Request
properties:
overlay:
description: When enabled, it stops the audio being played in the overlay queue.
type: boolean
example: true
default: false
stop:
description: Use `current` to stop the current audio being played. Use `all` to stop the current audio file being
played and clear all audio files from the queue.
type: string
example: current
default: all
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
overlay: false
stop: all
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
PoolMembershipResponse:
type: object
properties:
data:
type: object
properties:
pool_id:
type: string
format: uuid
dedicated_ip_id:
type: string
format: uuid
weight:
type: integer
minimum: 1
created_at:
type: string
format: date-time
required:
- data
PortOutSupportingDocument:
required:
- id
- record_type
- type
- portout_id
- document_id
- created_at
- updated_at
properties:
id:
type: string
format: uuid
example: 5a16902a-2ee9-4882-a247-420fc6627b62
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: supporting_document
type:
type: string
enum:
- loa
- invoice
description: Identifies the type of the document
readOnly: true
example: loa
portout_id:
type: string
format: uuid
description: Identifies the associated port request
readOnly: true
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
document_id:
format: uuid
type: string
description: Identifies the associated document
example: f1c5e079-9d82-4f50-95bc-ae2f6b8d84d7
created_at:
type: string
description: Supporting document creation timestamp in ISO 8601 format
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: Supporting document last changed timestamp in ISO 8601 format
example: '2018-02-02T22:25:27.521Z'
example:
id: 5a16902a-2ee9-4882-a247-420fc6627b62
record_type: supporting_document
type: loa
portout_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
document_id: f1c5e079-9d82-4f50-95bc-ae2f6b8d84d7
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
type: object
Portability:
type: object
properties:
lrn:
type: string
description: Local Routing Number, if assigned to the requested phone number
example: '2245701999'
ported_status:
type: string
description: Indicates whether or not the requested phone number has been ported
enum:
- Y
- N
- ''
example: Y
ported_date:
type: string
description: ISO-formatted date when the requested phone number has been ported
example: '2017-10-20'
ocn:
type: string
description: Operating Company Name (OCN) as per the Local Exchange Routing Guide (LERG) database
example: 073H
line_type:
type: string
description: The line type of the phone number. Uses the same value set as carrier.type; see the API reference for
the full list.
enum:
- fixed line
- mobile
- voip
- fixed line or mobile
- toll free
- premium rate
- shared cost
- personal number
- pager
- uan
- voicemail
- unknown
example: voip
spid:
type: string
description: SPID (Service Provider ID)
example: 073H
spid_carrier_name:
type: string
description: Service provider name
example: Telnyx/4
spid_carrier_type:
type: string
description: Service provider type
example: '3'
altspid:
type: string
description: Alternative SPID (Service Provider ID). Often used when a carrier is using a number from another carrier
example: 073H
altspid_carrier_name:
type: string
description: Alternative service provider name
example: Telnyx/4
altspid_carrier_type:
type: string
description: Alternative service provider type
example: '3'
city:
type: string
description: City name extracted from the locality in the Local Exchange Routing Guide (LERG) database
example: WAUKEGAN
state:
type: string
example: Illinois
PortabilityCheckDetails:
type: object
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: portability_check_result
fast_portable:
type: boolean
description: Indicates whether this phone number is FastPort eligible
example: true
readOnly: true
not_portable_reason:
type: string
description: If this phone number is not portable, explains why. Empty string if the number is portable.
example: No coverage
readOnly: true
phone_number:
type: string
description: The +E.164 formatted phone number this result is about
example: '+13125550123'
readOnly: true
portable:
type: boolean
description: Indicates whether this phone number is portable
example: true
readOnly: true
PortabilityStatus:
type: string
description: Specifies whether Telnyx is able to confirm portability this number in the United States & Canada. International
phone numbers are provisional by default.
enum:
- pending
- confirmed
- provisional
example: confirmed
PortingActionRequirement:
type: object
properties:
id:
type: string
description: Identifies the action requirement
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource
example: porting_action_requirement
enum:
- porting_action_requirement
porting_order_id:
type: string
description: The ID of the porting order this action requirement belongs to
example: 12ade33a-21c0-473b-b055-b3c836e1c292
requirement_type_id:
type: string
description: The ID of the requirement type
example: 53970723-fbff-4f46-a975-f62be6c1a585
action_type:
type: string
description: The type of action required
example: document_upload
action_url:
type:
- string
- 'null'
description: Optional URL for the action
example: https://example.com/action
status:
type: string
description: Current status of the action requirement
example: created
enum:
- created
- pending
- completed
- cancelled
- failed
cancel_reason:
type:
- string
- 'null'
description: Reason for cancellation if status is 'cancelled'
example: null
created_at:
type: string
format: date-time
description: ISO 8601 formatted date-time indicating when the resource was created
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date-time indicating when the resource was updated
example: '2018-02-02T22:25:27.521Z'
PortingAdditionalDocument:
type: object
properties:
id:
type: string
description: Uniquely identifies this additional document
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
document_type:
type: string
description: Identifies the type of additional document
enum:
- loa
- invoice
- csr
- other
example: loa
document_id:
type: string
format: uuid
description: Identifies the associated document
example: f1486bae-f067-460c-ad43-73a92848f902
filename:
type: string
description: The filename of the related document.
example: file.txt
content_type:
type: string
description: The content type of the related document.
example: text/plain
porting_order_id:
type: string
format: uuid
description: Identifies the associated porting order
example: f1486bae-f067-460c-ad43-73a92848f902
record_type:
type: string
example: porting_additional_document
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingAssociatedPhoneNumber:
type: object
properties:
id:
description: Uniquely identifies this associated phone number.
type: string
format: uuid
example: f24151b6-3389-41d3-8747-7dd8c681e5e2
readOnly: true
porting_order_id:
description: Identifies the porting order associated with this phone number.
type: string
format: uuid
example: a24151b6-3389-41d3-8747-7dd8c681e5e2
country_code:
description: Specifies the country code for this associated phone number. It is a two-letter ISO 3166-1 alpha-2
country code.
type: string
example: GB
phone_number_type:
description: Specifies the phone number type for this associated phone number.
type: string
example: local
enum:
- landline
- local
- mobile
- national
- shared_cost
- toll_free
phone_number_range:
description: Specifies the phone number range for this associated phone number.
type: object
properties:
start_at:
description: Specifies the start of the phone number range for this associated phone number.
type: string
pattern: ^\+\d{7,15}$
example: '+441234567890'
end_at:
description: Specifies the end of the phone number range for this associated phone number.
type: string
pattern: ^\+\d{7,15}$
example: '+441234567899'
action:
description: Specifies the action to take with this phone number during partial porting.
type: string
enum:
- keep
- disconnect
example: keep
record_type:
type: string
example: porting_associated_phone_number
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was last updated.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
PortingEvent:
type: object
oneOf:
- $ref: '#/components/schemas/PortingEventDeletedPayload'
- $ref: '#/components/schemas/PortingEventMessagingChangedPayload'
- $ref: '#/components/schemas/PortingEventStatusChangedEvent'
- $ref: '#/components/schemas/PortingEventNewCommentEvent'
- $ref: '#/components/schemas/PortingEventSplitEvent'
- $ref: '#/components/schemas/PortingEventWithoutWebhook'
discriminator:
propertyName: event_type
mapping:
porting_order.deleted: '#/components/schemas/PortingEventDeletedPayload'
porting_order.messaging_changed: '#/components/schemas/PortingEventMessagingChangedPayload'
porting_order.status_changed: '#/components/schemas/PortingEventStatusChangedEvent'
porting_order.new_comment: '#/components/schemas/PortingEventNewCommentEvent'
porting_order.split: '#/components/schemas/PortingEventSplitEvent'
porting_order.loa_updated: '#/components/schemas/PortingEventWithoutWebhook'
porting_order.sharing_token_expired: '#/components/schemas/PortingEventWithoutWebhook'
PortingEventDeletedPayload:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- porting_order.deleted
example: porting_order.deleted
porting_order_id:
type: string
format: uuid
description: Identifies the porting order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
- webhook_v1
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting order that was deleted.
customer_reference:
type: string
description: Identifies the customer reference associated with the porting order.
example: my-ref-001
deleted_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the porting order was deleted.
example: '2021-03-19T10:07:15.527Z'
record_type:
type: string
example: porting_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingEventMessagingChangedPayload:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- porting_order.messaging_changed
example: porting_order.messaging_changed
porting_order_id:
type: string
format: uuid
description: Identifies the porting order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
- webhook_v1
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the porting_order.messaging_changed event
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting order that was moved.
customer_reference:
type: string
description: Identifies the customer reference associated with the porting order.
example: my-ref-001
support_key:
type: string
description: Identifies the support key associated with the porting order.
example: sr_b1a2c3
messaging:
type: object
description: The messaging portability status of the porting order.
properties:
messaging_capable:
type: boolean
description: Indicates whether the porting order is messaging capable.
example: true
enable_messaging:
type: boolean
description: Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false,
any messaging capabilities will stay with their current provider.
example: true
messaging_port_status:
type: string
description: Indicates the messaging port status of the porting order.
enum:
- not_applicable
- pending
- activating
- exception
- canceled
- partial_port_complete
- ported
example: ported
messaging_port_completed:
type: boolean
description: Indicates whether the messaging port is completed.
example: true
record_type:
type: string
example: porting_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingEventNewCommentEvent:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- porting_order.new_comment
example: porting_order.new_comment
porting_order_id:
type: string
format: uuid
description: Identifies the porting order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
- webhook_v1
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the porting_order.new_comment event
properties:
porting_order_id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting order that the comment was added to.
support_key:
type: string
description: Identifies the support key associated with the porting order.
example: sr_b1a2c3
comment:
type: object
description: The comment that was added to the porting order.
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the comment.
body:
type: string
description: The body of the comment.
example: This is a comment.
user_id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the user that create the comment.
user_type:
type: string
example: user
description: Identifies the type of the user that created the comment.
enum:
- user
- admin
- system
inserted_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the comment was created.
example: '2021-03-19T10:07:15.527Z'
record_type:
type: string
example: porting_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingEventSplitEvent:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- porting_order.split
example: porting_order.split
porting_order_id:
type: string
format: uuid
description: Identifies the porting order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
- webhook_v1
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the porting_order.split event
properties:
from:
type: object
description: The porting order that was split.
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting order that was split.
to:
type: object
description: The new porting order that the phone numbers was moved to.
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting order that was split.
porting_phone_numbers:
type: array
description: The list of porting phone numbers that were moved to the new porting order.
items:
type: object
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting phone number that was moved.
record_type:
type: string
example: porting_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingEventStatusChangedEvent:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- porting_order.status_changed
example: porting_order.status_changed
porting_order_id:
type: string
format: uuid
description: Identifies the porting order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
- webhook_v1
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the porting_order.status_changed event
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the porting order that was moved.
customer_reference:
type: string
description: Identifies the customer reference associated with the porting order.
example: my-ref-001
status:
$ref: '#/components/schemas/PortingOrderStatus'
support_key:
type: string
description: Identifies the support key associated with the porting order.
example: sr_b1a2c3
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the porting order was moved.
example: '2021-03-19T10:07:15.527Z'
webhook_url:
type: string
description: The URL to send the webhook to.
example: https://example.com/webhook
record_type:
type: string
example: porting_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingEventWithoutWebhook:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- porting_order.loa_updated
- porting_order.sharing_token_expired
example: porting_order.loa_updated
porting_order_id:
type: string
format: uuid
description: Identifies the porting order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
- webhook_v1
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: 'null'
record_type:
type: string
example: porting_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingLOAConfiguration:
type: object
properties:
id:
type: string
description: Uniquely identifies the LOA configuration.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
company_name:
type: string
description: The name of the company
example: Telnyx
organization_id:
type: string
description: The organization that owns the LOA configuration
example: f1486bae-f067-460c-ad43-73a92848f902
name:
type: string
description: The name of the LOA configuration
example: My LOA Configuration
logo:
type: object
description: The logo to be used in the LOA.
properties:
document_id:
type: string
format: uuid
description: Identifies the document that contains the logo.
example: f1486bae-f067-460c-ad43-73a92848f902
content_type:
type: string
description: The content type of the logo.
enum:
- image/png
example: image/png
address:
type: object
description: The address of the company.
properties:
street_address:
type: string
description: The street address of the company
example: 600 Congress Avenue
extended_address:
type: string
description: The extended address of the company
example: 14th Floor
city:
type: string
description: The locality of the company
example: Austin
state:
type: string
description: The administrative area of the company
example: TX
pattern: ^[A-Z]{2}$
zip_code:
type: string
description: The postal code of the company
example: '78701'
pattern: ^[0-9]{5}(?:-[0-9]{4})?$
country_code:
type: string
description: The country code of the company
example: US
pattern: ^[A-Z]{2}$
contact:
type: object
description: The contact information of the company.
properties:
email:
type: string
description: The email address of the contact
example: testing@telnyx.com
phone_number:
type: string
description: The phone number of the contact
example: '+12003270001'
pattern: ^\+\d{11,15}$
record_type:
type: string
example: porting_loa_configuration
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingOrder:
type: object
properties:
id:
description: Uniquely identifies this porting order
type: string
format: uuid
example: f1486bae-f067-460c-ad43-73a92848f902
readOnly: true
customer_reference:
type:
- string
- 'null'
description: A customer-specified reference number for customer bookkeeping purposes
example: Acct 123abc
customer_group_reference:
type:
- string
- 'null'
description: A customer-specified group reference for customer bookkeeping purposes
example: Group-456
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
status:
$ref: '#/components/schemas/PortingOrderStatus'
support_key:
type:
- string
- 'null'
description: A key to reference this porting order when contacting Telnyx customer support. This information is
not available in draft porting orders.
example: sr_123abc
readOnly: true
parent_support_key:
type:
- string
- 'null'
description: A key to reference for the porting order group when contacting Telnyx customer support. This information
is not available for porting orders in `draft` state
example: pr_123abc
readOnly: true
porting_phone_numbers_count:
type: integer
description: Count of phone numbers associated with this porting order
example: 1
readOnly: true
old_service_provider_ocn:
type: string
description: Identifies the old service provider
example: Unreal Communications
readOnly: true
phone_numbers:
type: array
description: List of phone numbers associated with this porting order
items:
$ref: '#/components/schemas/PortingPhoneNumber'
documents:
$ref: '#/components/schemas/PortingOrderDocuments'
misc:
anyOf:
- $ref: '#/components/schemas/PortingOrderMisc'
- type: 'null'
end_user:
$ref: '#/components/schemas/PortingOrderEndUser'
activation_settings:
$ref: '#/components/schemas/PortingOrderActivationSettings'
phone_number_configuration:
$ref: '#/components/schemas/PortingOrderPhoneNumberConfiguration'
phone_number_type:
type: string
description: The type of the phone number
example: local
enum:
- landline
- local
- localcommercial
- mobile
- multipurpose
- national
- other
- shared_cost
- toll_free
description:
type: string
description: A description of the porting order
example: FP Telnyx
readOnly: true
requirements:
type: array
description: List of documentation requirements for porting numbers. Can be set directly or via the `requirement_group_id`
parameter.
items:
$ref: '#/components/schemas/PortingOrderRequirement'
requirements_met:
type: boolean
description: Is true when the required documentation is met
example: false
user_feedback:
$ref: '#/components/schemas/PortingOrderUserFeedback'
user_id:
type: string
format: uuid
description: Identifies the user (or organization) who requested the porting order
example: 40d68ba2-0847-4df2-be9c-b0e0cb673e75
webhook_url:
type:
- string
- 'null'
format: uri
example: https://example.com/porting_webhooks
record_type:
type: string
example: porting_order
description: Identifies the type of the resource.
readOnly: true
messaging:
$ref: '#/components/schemas/PortingOrderMessaging'
additional_steps:
type: array
description: For specific porting orders, we may require additional steps to be taken before submitting the porting
order.
items:
type: string
enum:
- associated_phone_numbers
- phone_number_verification_codes
PortingOrderActivationSettings:
type: object
properties:
foc_datetime_requested:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted Date/Time requested for the FOC date
example: '2021-03-19T10:07:15.527Z'
foc_datetime_actual:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted Date/Time of the FOC date
example: '2021-03-19T10:07:15.527Z'
fast_port_eligible:
type: boolean
readOnly: true
description: Indicates whether this porting order is eligible for FastPort
example: true
activation_status:
anyOf:
- $ref: '#/components/schemas/PortingOrderActivationStatus'
- type: 'null'
PortingOrderActivationStatus:
type: string
description: Activation status
enum:
- New
- Pending
- Conflict
- Cancel Pending
- Failed
- Concurred
- Activate RDY
- Disconnect Pending
- Concurrence Sent
- Old
- Sending
- Active
- Cancelled
example: Active
PortingOrderDocuments:
type: object
description: Can be specified directly or via the `requirement_group_id` parameter.
properties:
loa:
type:
- string
- 'null'
format: uuid
description: Returned ID of the submitted LOA via the Documents endpoint
example: 64ffb720-04c7-455b-92d6-20fcca92e935
invoice:
type:
- string
- 'null'
format: uuid
description: Returned ID of the submitted Invoice via the Documents endpoint
example: ce74b771-d23d-4960-81ec-8741b3862146
PortingOrderEndUser:
type: object
properties:
admin:
$ref: '#/components/schemas/PortingOrderEndUserAdmin'
location:
$ref: '#/components/schemas/PortingOrderEndUserLocation'
PortingOrderEndUserAdmin:
type: object
properties:
entity_name:
type:
- string
- 'null'
description: Person Name or Company name requesting the port
example: Porter McPortersen
auth_person_name:
type:
- string
- 'null'
description: Name of person authorizing the porting order
example: Porter McPortersen II
billing_phone_number:
type:
- string
- 'null'
description: Billing phone number associated with these phone numbers
example: '13035551234'
account_number:
type:
- string
- 'null'
description: The authorized person's account number with the current service provider
example: 123abc
tax_identifier:
type:
- string
- 'null'
description: European tax identification number. Applicable only in the European Union
example: 1234abcd
pin_passcode:
type:
- string
- 'null'
description: PIN/passcode possibly required by the old service provider for extra verification
example: '1234'
business_identifier:
type:
- string
- 'null'
description: European business identification number. Applicable only in the European Union
example: abc123
PortingOrderEndUserLocation:
type: object
properties:
street_address:
type:
- string
- 'null'
description: First line of billing address
example: 600 Congress Avenue
extended_address:
type:
- string
- 'null'
description: Second line of billing address
example: 14th Floor
locality:
type:
- string
- 'null'
description: City or municipality of billing address
example: Austin
administrative_area:
type:
- string
- 'null'
description: State, province, or similar of billing address
example: TX
postal_code:
type:
- string
- 'null'
description: Postal Code of billing address
example: '78701'
country_code:
type:
- string
- 'null'
description: ISO3166-1 alpha-2 country code of billing address
example: US
PortingOrderMessaging:
type: object
description: Information about messaging porting process.
properties:
messaging_capable:
type: boolean
description: Indicates whether the porting order can also port messaging capabilities.
example: true
enable_messaging:
type: boolean
description: Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any messaging
capabilities will stay with their current provider.
example: true
messaging_port_status:
type: string
description: The current status of the messaging porting.
enum:
- not_applicable
- pending
- activating
- exception
- canceled
- partial_port_complete
- ported
example: pending
messaging_port_completed:
type: boolean
description: Indicates whether the messaging porting has been completed.
example: false
PortingOrderMisc:
type: object
properties:
type:
$ref: '#/components/schemas/PortingOrderType'
remaining_numbers_action:
type:
- string
- 'null'
description: Remaining numbers can be either kept with their current service provider or disconnected. 'new_billing_telephone_number'
is required when 'remaining_numbers_action' is 'keep'.
enum:
- keep
- disconnect
- null
example: disconnect
new_billing_phone_number:
type:
- string
- 'null'
description: New billing phone number for the remaining numbers. Used in case the current billing phone number is
being ported to Telnyx. This will be set on your account with your current service provider and should be one
of the numbers remaining on that account.
PortingOrderPhoneNumberConfiguration:
type: object
properties:
billing_group_id:
type:
- string
- 'null'
description: identifies the billing group to set on the numbers when ported
example: f1486bae-f067-460c-ad43-73a92848f902
connection_id:
type:
- string
- 'null'
description: identifies the connection to set on the numbers when ported
example: f1486bae-f067-460c-ad43-73a92848f902
messaging_profile_id:
type:
- string
- 'null'
description: identifies the messaging profile to set on the numbers when ported
example: f1486bae-f067-460c-ad43-73a92848f901
emergency_address_id:
type:
- string
- 'null'
description: identifies the emergency address to set on the numbers when ported
example: f1486bae-f067-460c-ad43-73a92848f902
tags:
type: array
items:
type: string
description: Tag to set on the numbers when ported
example:
- abc
- '123'
PortingOrderRequirement:
type: object
properties:
field_type:
type: string
description: Type of value expected on field_value field
enum:
- document
example: document
field_value:
type: string
description: identifies the document that satisfies this requirement
example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe
requirement_type_id:
type: string
description: Identifies the requirement type that meets this requirement
example: 59b0762a-b274-4f76-ac32-4d5cf0272e66
record_type:
type: string
description: Identifies the type of the resource.
example: porting_requirement
PortingOrderRequirementDetail:
type: object
properties:
field_type:
type: string
description: Type of value expected on field_value field
enum:
- document
- textual
example: document
field_value:
type: string
description: Identifies the document that satisfies this requirement
example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe
requirement_type:
type: object
description: Identifies the requirement type that meets this requirement
properties:
acceptance_criteria:
type: object
description: The acceptance criteria for the requirement type
example:
acceptable_values: []
additionalProperties: true
description:
type: string
description: A description of the requirement type
example: A copy of the latest phone bill from the current provider
example:
type: string
description: An example of the requirement type
example: Most recent phone bill
id:
type: string
description: Identifies the requirement type
example: 53970723-fbff-4f46-a975-f62be6c1a585
name:
type: string
description: The name of the requirement type
example: Latest Invoice
type:
type: string
description: The type of the requirement type
example: document
requirement_status:
type: string
description: Status of the requirement
example: approved
record_type:
type: string
description: Identifies the type of the resource.
example: porting_requirement
PortingOrderSharingToken:
type: object
properties:
id:
type: string
description: Uniquely identifies this sharing token
format: uuid
example: 0a4b78a0-d416-4761-94f7-46c72ec56547
porting_order_id:
type: string
format: uuid
description: Identifies the porting order resource being shared
example: f1486bae-f067-460c-ad43-73a92848f902
expires_in_seconds:
type: integer
minimum: 1
description: The number of seconds until the sharing token expires
example: 3600
permissions:
type: array
description: The permissions granted to the sharing token
items:
type: string
enum:
- porting_order.document.read
- porting_order.document.update
example:
- porting_order.document.read
- porting_order.document.update
token:
type: string
description: A signed JWT token that can be used to access the shared resource
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODk4OTQ2NzcsImlzdCI6MTY4OTg5MTA3NywicGVybWlzc2lvbnMiOlsicG9ydGluZ19vcmRlci5kb2N1bWVudC5yZWFkIl0sInBvcnRpbmdfb3JkZXJfaWQiOiJmZDRiODZjOC00OTdkLTRjNmQtOTYwOS1hNzg5ZTRlMTRjZmUifQ.CT0HRF6OLj7VPZ8p5Y_0S8rOL8SEUznwJJkR-YReKwc
expires_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the sharing token expires.
example: '2021-03-19T10:07:15.527000Z'
record_type:
type: string
example: porting_order_sharing_token
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
PortingOrderStatus:
type: object
description: Porting order status
properties:
details:
type: array
items:
$ref: '#/components/schemas/PortingOrdersExceptionType'
description: A list of 0 or more details about this porting order's status
value:
type: string
description: The current status of the porting order
example: ported
enum:
- draft
- in-process
- submitted
- exception
- foc-date-confirmed
- ported
- cancelled
- cancel-pending
PortingOrderType:
type: string
description: A port can be either 'full' or 'partial'. When type is 'full' the other attributes should be omitted.
enum:
- full
- partial
example: full
PortingOrderUserFeedback:
type: object
properties:
user_rating:
type:
- integer
- 'null'
description: Once an order is ported, cancellation is requested or the request is cancelled, the user may rate their
experience
example: 5
user_comment:
type:
- string
- 'null'
description: A comment related to the customer rating.
example: I loved my experience porting numbers with Telnyx
PortingOrdersActivationJob:
type: object
properties:
id:
description: Uniquely identifies this activation job
type: string
format: uuid
example: f1486bae-f067-460c-ad43-73a92848f902
readOnly: true
status:
type: string
description: Specifies the status of this activation job
enum:
- created
- in-process
- completed
- failed
activation_type:
type: string
description: Specifies the type of this activation job
enum:
- scheduled
- on-demand
activate_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the activation job should be executed. This time should be
between some activation window.
example: '2021-03-19T10:07:15.527Z'
activation_windows:
type: array
description: List of allowed activation windows for this activation job
items:
type: object
properties:
start_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the activation window starts
example: '2021-03-19T10:07:15.527Z'
end_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the activation window ends
example: '2021-03-19T10:07:15.527Z'
record_type:
type: string
example: porting_activation_job
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
PortingOrdersAllowedFocWindow:
type: object
title: PortingOrdersAllowedFocWindow
properties:
started_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating the start of the range of foc window.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
ended_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating the end of the range of foc window
example: '2021-03-19T10:07:15.527Z'
readOnly: true
record_type:
type: string
example: porting_order
description: Identifies the type of the resource.
readOnly: true
PortingOrdersComment:
type: object
properties:
id:
type: string
format: uuid
example: f1486bae-f067-460c-ad43-73a92848f902
body:
type: string
description: Body of comment
example: Great experience so far
porting_order_id:
type: string
format: uuid
example: f1486bae-f067-460c-ad43-73a92848f902
user_type:
type: string
description: Indicates whether this comment was created by a Telnyx Admin, user, or system
enum:
- admin
- user
- system
example: user
record_type:
type: string
description: Identifies the type of the resource.
example: porting_comment
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
PortingOrdersExceptionType:
type: object
properties:
code:
type: string
description: Identifier of an exception type
enum:
- ACCOUNT_NUMBER_MISMATCH
- AUTH_PERSON_MISMATCH
- BTN_ATN_MISMATCH
- ENTITY_NAME_MISMATCH
- FOC_EXPIRED
- FOC_REJECTED
- LOCATION_MISMATCH
- LSR_PENDING
- MAIN_BTN_PORTING
- OSP_IRRESPONSIVE
- OTHER
- PASSCODE_PIN_INVALID
- PHONE_NUMBER_HAS_SPECIAL_FEATURE
- PHONE_NUMBER_MISMATCH
- PHONE_NUMBER_NOT_PORTABLE
- PORT_TYPE_INCORRECT
- PORTING_ORDER_SPLIT_REQUIRED
- POSTAL_CODE_MISMATCH
- RATE_CENTER_NOT_PORTABLE
- SV_CONFLICT
- SV_UNKNOWN_FAILURE
example: ENTITY_NAME_MISMATCH
description:
type: string
description: Description of an exception type
example: Entity name does not match that on the CSR
PortingPhoneNumber:
type: object
properties:
porting_order_status:
type: string
description: The current status of the porting order
enum:
- draft
- in-process
- submitted
- exception
- foc-date-confirmed
- cancel-pending
- ported
- cancelled
example: in-process
phone_number_type:
type: string
description: The type of the phone number
enum:
- landline
- local
- localcommercial
- mobile
- multipurpose
- national
- other
- shared_cost
- toll_free
example: local
phone_number:
type: string
description: E164 formatted phone number
example: '13035550987'
porting_order_id:
type: string
format: uuid
description: Identifies the associated port request
example: f1486bae-f067-460c-ad43-73a92848f902
support_key:
type: string
description: A key to reference this porting order when contacting Telnyx customer support
example: sr_a12345
activation_status:
$ref: '#/components/schemas/PortingOrderActivationStatus'
portability_status:
$ref: '#/components/schemas/PortabilityStatus'
requirements_status:
type: string
description: The current status of the requirements in a INTL porting order
enum:
- requirement-info-pending
- requirement-info-under-review
- requirement-info-exception
- approved
example: approved
record_type:
type: string
example: porting_phone_number
description: Identifies the type of the resource.
readOnly: true
PortingPhoneNumberBlock:
type: object
properties:
id:
description: Uniquely identifies this porting phone number block.
type: string
format: uuid
example: f24151b6-3389-41d3-8747-7dd8c681e5e2
readOnly: true
country_code:
description: Specifies the country code for this porting phone number block. It is a two-letter ISO 3166-1 alpha-2
country code.
type: string
example: DE
phone_number_type:
description: Specifies the phone number type for this porting phone number block.
type: string
example: local
enum:
- landline
- local
- localcommercial
- mobile
- multipurpose
- national
- other
- shared_cost
- toll_free
phone_number_range:
description: Specifies the phone number range for this porting phone number block.
type: object
properties:
start_at:
description: Specifies the start of the phone number range for this porting phone number block.
type: string
pattern: ^\+\d{7,15}$
example: '+4930244999901'
end_at:
description: Specifies the end of the phone number range for this porting phone number block.
type: string
pattern: ^\+\d{7,15}$
example: '+4930244999910'
activation_ranges:
description: Specifies the activation ranges for this porting phone number block. The activation range must be within
the phone number range and should not overlap with other activation ranges.
type: array
items:
type: object
properties:
start_at:
description: Specifies the start of the activation range. Must be greater or equal the start of the phone
number range.
type: string
pattern: ^\+\d{7,15}$
example: '+4930244999901'
end_at:
description: Specifies the end of the activation range. It must be no more than the end of the phone number
range.
type: string
pattern: ^\+\d{7,15}$
example: '+4930244999910'
record_type:
type: string
example: porting_phone_number_block
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was last updated.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
PortingPhoneNumberConfiguration:
type: object
properties:
id:
type: string
description: Uniquely identifies this phone number configuration
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
user_bundle_id:
type: string
format: uuid
description: Identifies the associated user bundle
example: daa4308e-742f-4867-97f2-3073db13319a
porting_phone_number_id:
type: string
format: uuid
description: Identifies the associated porting phone number
example: f1486bae-f067-460c-ad43-73a92848f902
record_type:
type: string
example: porting_phone_number_configuration
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingPhoneNumberExtension:
type: object
properties:
id:
description: Uniquely identifies this porting phone number extension.
type: string
format: uuid
example: f24151b6-3389-41d3-8747-7dd8c681e5e2
readOnly: true
porting_phone_number_id:
description: Identifies the porting phone number associated with this porting phone number extension.
type: string
format: uuid
example: f24151b6-3389-41d3-8747-7dd8c681e5e2
extension_range:
description: Specifies the extension range for this porting phone number extension.
type: object
properties:
start_at:
description: Specifies the start of the extension range for this porting phone number extension.
type: integer
example: 1
end_at:
description: Specifies the end of the extension range for this porting phone number extension.
type: integer
example: 10
activation_ranges:
description: Specifies the activation ranges for this porting phone number extension. The activation range must
be within the extension range and should not overlap with other activation ranges.
type: array
items:
type: object
properties:
start_at:
description: Specifies the start of the activation range. Must be greater or equal the start of the extension
range.
type: integer
example: 1
end_at:
description: Specifies the end of the activation range. It must be no more than the end of the extension range.
type: integer
example: 10
record_type:
type: string
example: porting_phone_number_extension
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was last updated.
example: '2021-03-19T10:07:15.527Z'
readOnly: true
PortingReport:
type: object
properties:
id:
type: string
description: Uniquely identifies the report.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
report_type:
type: string
description: Identifies the type of report
enum:
- export_porting_orders_csv
example: export_porting_orders_csv
status:
type: string
description: The current status of the report generation.
enum:
- pending
- completed
example: completed
params:
oneOf:
- $ref: '#/components/schemas/ExportPortingOrdersCSVReport'
document_id:
type: string
format: uuid
description: Identifies the document that was uploaded when report was generated. This field is only populated when
the report is under completed status.
example: f1486bae-f067-460c-ad43-73a92848f902
record_type:
type: string
example: porting_report
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingUKCarrier:
type: object
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the UK carrier.
cupid:
type: string
description: The CUPID of the carrier. This is a 3 digit number code that identifies the carrier in the UK.
example: '895'
name:
type: string
description: The name of the carrier.
example: Telnyx UK Limited
alternative_cupids:
type: array
description: Alternative CUPIDs of the carrier.
items:
type: string
description: An alternative CUPID of the carrier.
example: '895'
record_type:
type: string
example: porting_uk_carrier
description: Identifies the type of the resource.
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortingVerificationCode:
type: object
properties:
id:
type: string
description: Uniquely identifies this porting verification code
format: uuid
example: f1486bae-f067-460c-ad43-73a92848f902
phone_number:
type: string
description: E164 formatted phone number
example: '+13035550987'
verified:
type: boolean
description: Indicates whether the verification code has been verified
example: true
porting_order_id:
type: string
format: uuid
description: Identifies the associated porting order
example: f1486bae-f067-460c-ad43-73a92848f902
record_type:
type: string
example: porting_verification_code
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PortoutComment:
required:
- id
- body
- user_id
- created_at
properties:
id:
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: portout
body:
type: string
description: Comment body
example: This is a comment
portout_id:
type: string
description: Identifies the associated port request
default: null
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
user_id:
type: string
description: Identifies the user who created the comment. Will be null if created by Telnyx Admin
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
created_at:
type: string
description: Comment creation timestamp in ISO 8601 format
example: '2018-02-02T22:25:27.521Z'
example:
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
record_type: portout
body: This is a comment
portout_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
user_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
created_at: '2018-02-02T22:25:27.521Z'
type: object
PortoutDetails:
type: object
properties:
id:
type: string
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: portout
phone_numbers:
description: Phone numbers associated with this portout
type: array
items:
type: string
description: E164 formatted phone number
example:
- '+35312345678'
authorized_name:
type: string
description: Name of person authorizing the porting order
example: McPortersen
carrier_name:
type: string
description: Carrier the number will be ported out to
example: test
current_carrier:
type: string
description: The current carrier
example: telnyx
end_user_name:
type: string
description: Person name or company name requesting the port
example: McPortersen
city:
type: string
description: City or municipality of billing address
example: Chicago
state:
type: string
description: State, province, or similar of billing address
example: IL
zip:
type: string
description: Postal Code of billing address
example: '00000'
lsr:
type: array
description: The Local Service Request
items:
type: string
format: uri
description: A link to the Local Service Request
example:
- https://example.com/files/lsr.pdf
pon:
type: string
description: Port order number assigned by the carrier the number will be ported out to
example: '00000000'
reason:
type:
- string
- 'null'
description: The reason why the order is being rejected by the user. If the order is authorized, this field can
be left null
example: null
rejection_code:
type: integer
description: The rejection code for one of the valid rejections to reject a port out order
example: 1002
service_address:
type: string
description: First line of billing address (street address)
example: 000 Example Street
foc_date:
type: string
description: ISO 8601 formatted Date/Time of the FOC date
example: '2018-02-02T22:25:27.521Z'
requested_foc_date:
type: string
description: ISO 8601 formatted Date/Time of the user requested FOC date
example: '2018-02-02T22:25:27.521Z'
spid:
type: string
description: New service provider spid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
support_key:
type: string
description: A key to reference this port out request when contacting Telnyx customer support
example: PO_764725
status:
type: string
description: Status of portout request
enum:
- pending
- authorized
- ported
- rejected
- rejected-pending
- canceled
example: rejected
already_ported:
type: boolean
description: Is true when the number is already ported
example: false
user_id:
type: string
format: uuid
description: Identifies the user (or organization) who requested the port out
example: 7865816a-ee85-4e50-b19e-52983dcc6d4a
vendor:
type: string
description: Telnyx partner providing network coverage
format: uuid
example: 0e66ed3b-37e6-4fed-93d6-a30ce2493661
created_at:
type: string
description: ISO 8601 formatted date of when the portout was created
example: '2018-02-02T22:25:27.521Z'
inserted_at:
type: string
description: ISO 8601 formatted date of when the portout was created
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the portout was last updated
example: '2018-02-02T22:25:27.521Z'
host_messaging:
type: boolean
description: Indicates whether messaging services should be maintained with Telnyx after the port out completes
default: false
example: false
PortoutEvent:
type: object
oneOf:
- $ref: '#/components/schemas/WebhookPortoutStatusChanged'
- $ref: '#/components/schemas/WebhookPortoutNewComment'
- $ref: '#/components/schemas/WebhookPortoutFocDateChanged'
discriminator:
propertyName: event_type
mapping:
portout.status_changed: '#/components/schemas/WebhookPortoutStatusChanged'
portout.new_comment: '#/components/schemas/WebhookPortoutNewComment'
portout.foc_date_changed: '#/components/schemas/WebhookPortoutFocDateChanged'
PortoutRejection:
type: object
properties:
code:
type: integer
example: 1002
description:
type: string
example: Invalid PIN
reason_required:
type: boolean
example: false
PortoutReport:
type: object
properties:
id:
type: string
description: Uniquely identifies the report.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
report_type:
type: string
description: Identifies the type of report
enum:
- export_portouts_csv
example: export_portouts_csv
status:
type: string
description: The current status of the report generation.
enum:
- pending
- completed
example: completed
params:
oneOf:
- $ref: '#/components/schemas/ExportPortoutsCSVReport'
document_id:
type: string
format: uuid
description: Identifies the document that was uploaded when report was generated. This field is only populated when
the report is under completed status.
example: f1486bae-f067-460c-ad43-73a92848f902
record_type:
type: string
example: portout_report
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
PostConversationSettings:
type: object
description: Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM
turn after the conversation ends, allowing it to execute final tool calls such as sending a summary or updating a
record via webhook or function tools. Integration and MCP server tools are not available post-conversation; call-control
tools (e.g. hangup, transfer) are also unavailable. Beta feature.
properties:
enabled:
type: boolean
description: Whether post-conversation processing is enabled. When true, the assistant will be invoked after the
conversation ends to perform any final tool calls. Defaults to false.
default: false
PostConversationSettingsReq:
type: object
description: Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM
turn after the conversation ends, allowing it to execute final tool calls such as sending a summary or updating a
record via webhook or function tools. Integration and MCP server tools are not available post-conversation; call-control
tools (e.g. hangup, transfer) are also unavailable. Beta feature.
properties:
enabled:
type: boolean
description: Whether post-conversation processing is enabled. When true, the assistant will be invoked after the
conversation ends to perform any final tool calls. Defaults to false.
default: false
PresignedObjectUrl:
type: object
properties:
content:
type: object
properties:
token:
type: string
description: The token for the object
presigned_url:
type: string
description: The presigned URL for the object
expires_at:
type: string
description: The expiration time of the token
format: date-time
PresignedObjectUrlParams:
type: object
properties:
ttl:
type: integer
description: The time to live of the token in seconds
minimum: 1
maximum: 604800
example: 60
PressAction:
type: object
description: Press a keyboard key.
required:
- type
- key
properties:
type:
const: press
key:
type: string
enum:
- Enter
- Tab
- Escape
- Backspace
- ArrowUp
- ArrowDown
- ArrowLeft
- ArrowRight
- PageUp
- PageDown
- Home
- End
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
PreviewSummaryRequest:
properties:
instructions:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Instructions
description: The candidate note to try. `null`, empty, or whitespace-only previews the neutral default -- the summary
a profile returns to when instructions are cleared. Capped at 2000 characters, the same cap `PATCH /settings`
applies on save; a longer note is refused with `422` before anything is generated.
type: object
title: PreviewSummaryRequest
description: A candidate note to preview against one profile. The field is optional; omitting it, or sending null/empty/whitespace,
previews the neutral default.
PreviewSummaryResponse:
properties:
data:
$ref: '#/components/schemas/PreviewedSummary'
type: object
required:
- data
title: PreviewSummaryResponse
PreviewedSummary:
properties:
profile_id:
type: string
title: Profile Id
text:
anyOf:
- type: string
- type: 'null'
title: Text
description: The summary this profile would carry under the candidate note. Null when nothing was generated -- the
same signal `GET /summary` uses for a profile with no card yet.
type: object
required:
- profile_id
- text
title: PreviewedSummary
PricingEntry:
type: object
description: A single pricing entry. Standard products include rate, unit, currency, type, country_iso, direction, and
tiers. Inference products include model, input_rate, output_rate, cached_input_rate, and their respective tier arrays.
Rate-deck products include pricing_type and note fields with null rate and empty tiers.
properties:
name:
type: string
description: Human-readable name describing the pricing entry.
rate:
oneOf:
- type: number
description: Rate for standard products (e.g., 0.004).
- type: string
description: Rate for inference products (e.g., "0.001").
- type: 'null'
description: Per-unit rate. Numeric for standard products, string for inference products. Null for rate-deck products.
unit:
type: string
description: Unit of measurement (e.g., part, message, GB, per_1k_tokens).
currency:
type: string
description: ISO currency code (e.g., USD).
type:
type: string
description: Pricing type (e.g., usage).
country_iso:
type:
- string
- 'null'
description: ISO country code. Null for non-geographic products.
direction:
type:
- string
- 'null'
description: Direction (e.g., termination). Null for non-directional products.
tiers:
type: array
items:
$ref: '#/components/schemas/PricingTier'
description: Volume-based tiered pricing. Empty for rate-deck products.
pricing_type:
type:
- string
- 'null'
description: Pricing type for non-standard products (e.g., rate_deck). Absent on standard products.
note:
type:
- string
- 'null'
description: Additional note for rate-deck products (e.g., "Pricing is determined by the WhatsApp rate deck.").
model:
type: string
description: Model identifier. Present only on inference product entries.
input_rate:
type: string
description: Input token rate. Present only on inference product entries.
cached_input_rate:
type: string
description: Cached input token rate. Present only on inference product entries.
output_rate:
type: string
description: Output token rate. Present only on inference product entries.
input_tiers:
type: array
items:
$ref: '#/components/schemas/PricingTier'
description: Input token tiered pricing. Present only on inference product entries.
cached_input_tiers:
type: array
items:
$ref: '#/components/schemas/PricingTier'
description: Cached input token tiered pricing. Present only on inference product entries.
output_tiers:
type: array
items:
$ref: '#/components/schemas/PricingTier'
description: Output token tiered pricing. Present only on inference product entries.
PricingEntryListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PricingEntry'
meta:
$ref: '#/components/schemas/pricing_PaginationMeta'
required:
- data
- meta
PricingProduct:
type: object
properties:
slug:
type: string
description: Product identifier used in the per-product pricing endpoint.
name:
type: string
description: Display name of the product.
description:
type: string
description: Human-readable description of the product.
required:
- slug
- name
- description
PricingProductListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PricingProduct'
meta:
$ref: '#/components/schemas/pricing_PaginationMeta'
required:
- data
- meta
PricingTier:
type: object
properties:
min:
type: integer
minimum: 0
description: Lower bound of the tier (inclusive).
max:
type:
- integer
- 'null'
description: Upper bound of the tier (exclusive). Null means no upper limit.
rate:
oneOf:
- type: number
- type: string
description: Rate for this tier. Numeric for standard products, string for inference products.
required:
- min
- max
- rate
PrivacySettings:
properties:
data_retention:
type: boolean
description: If true, conversation history and insights will be stored. If false, they will not be stored. This
in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has
no effect on any separate recording, transcription, or storage configuration that you have set at the account,
number, or application level. All such external settings remain in force regardless of your selection here.
pii_redaction:
type: string
enum:
- disabled
- redact
default: disabled
description: 'Controls redaction of personally identifiable information (PII) from the conversation history that
is stored for this assistant. `disabled` (default) stores content as-is. `redact` replaces detected PII with ` `
placeholders (e.g. ` `, ` `) as the stored copies are written: message content (user, assistant,
and tool-result messages) and tool-call arguments are redacted when written to conversation history, so the stored
transcript, its read-back via the history API, and any insights generated from the stored messages contain the
placeholders instead of the PII; response bodies returned by webhook tools are redacted too, as stored in the
webhook logs — a per-conversation record separate from the transcript. In the Mission Control Portal this field
appears as a "PII Redaction" on/off toggle, where Enabled corresponds to `redact`. Redaction runs when the stored
copy is written, after the LLM has generated its reply: the live conversation is not redacted, the assistant''s
tools keep receiving the full (unredacted) values during the call, and the LLM still sees full content in its
context window. Call recordings (including any recording layout configured under telephony settings) and the payloads
of messages/webhooks delivered during the call are never redacted by this setting. The set of detected PII types
(names, street addresses, phone numbers, email addresses, government identifiers like SSN and driver''s license
numbers, credit card and bank account numbers, IP addresses, dates of birth, and other identifiers unique to a
person) is fixed by Telnyx and cannot be configured or extended per assistant. Assistants with `redact` cannot
be used for SMS/WhatsApp messaging (that combination is rejected with a 400 error); voice and web chat are unaffected.'
in_transit_data_locality:
type: boolean
default: false
description: 'Requires every model call made for a web chat turn to be received and served inside your organization''s
data-locality region, rather than only stored there. Applies to web chat only — voice and messaging assistants
are unaffected. Enabling it requires a data-locality region with in-region inference (USA, EU, AUS, UAE; see [Inference
regions](https://developers.telnyx.com/docs/inference/models/regions)) and Telnyx-hosted models for the assistant,
its fallback, and any conversation-flow node that overrides the model; the request is rejected otherwise. Once
enabled, send chat requests to your region''s API hostname: a request entering the platform in another region
is rejected rather than forwarded, because forwarding it would already have moved the content across the border.
Defaults to false.'
type: object
PrivateWirelessGateway:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
network_id:
type: string
format: uuid
description: The identification of the related network resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
readOnly: true
example: private_wireless_gateway
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
name:
description: The private wireless gateway name.
type: string
example: My private wireless gateway
region_code:
description: The name of the region where the Private Wireless Gateway is deployed.
type: string
example: dc2
default: null
status:
$ref: '#/components/schemas/PrivateWirelessGatewayStatus'
ip_range:
type: string
description: IP block used to assign IPs to the SIM cards in the Private Wireless Gateway.
example: 100.64.1.0/24
readOnly: true
default: null
assigned_resources:
type: array
description: A list of the resources that have been assigned to the Private Wireless Gateway.
items:
$ref: '#/components/schemas/PWGAssignedResourcesSummary'
PrivateWirelessGatewayStatus:
type: object
description: The current status or failure details of the Private Wireless Gateway.
properties:
value:
type: string
description: "The current status or failure details of the Private Wireless Gateway. \n provisioning\
\ - the Private Wireless Gateway is being provisioned. \n provisioned - the Private Wireless\
\ Gateway was provisioned and able to receive connections. \n failed - the provisioning had\
\ failed for a reason and it requires an intervention. \n decommissioning - the Private Wireless\
\ Gateway is being removed from the network. \n \n Transitioning between the provisioning and provisioned\
\ states may take some time."
enum:
- provisioning
- provisioned
- failed
- decommissioning
readOnly: true
default: provisioning
example: provisioned
error_description:
type:
- string
- 'null'
description: This attribute provides a human-readable explanation of why a failure happened.
readOnly: true
default: null
example: null
error_code:
type:
- string
- 'null'
description: This attribute is an [error code](https://developers.telnyx.com/docs/development/api-fundamentals/api-errors)
related to the failure reason.
readOnly: true
default: null
example: null
Profile:
properties:
profile_id:
type: string
title: Profile Id
memory_count:
type: integer
title: Memory Count
description: Memories stored under this profile, including the consolidated ones that paraphrase others. Listings
are ordered by it.
type: object
required:
- profile_id
- memory_count
title: Profile
ProfileAssignmentPhoneNumbers:
title: ProfileAssignmentPhoneNumbers
required:
- taskId
- phoneNumber
- status
type: object
properties:
taskId:
title: Taskid
type: string
description: The ID of the task associated with the phone number.
example: 667a80f8-b0a9-49d0-b9ab-a7a1bcc45086
phoneNumber:
title: Phonenumber
type: string
description: The phone number that the status is being checked for.
example: '+12024567890'
status:
title: Status
type: string
description: The status of the associated phone number assignment.
example: pending
ProfileListResponse:
properties:
data:
items:
$ref: '#/components/schemas/Profile'
type: array
title: Data
meta:
$ref: '#/components/schemas/PageMeta'
type: object
required:
- data
- meta
title: ProfileListResponse
ProfileMetrics:
type: object
description: Detailed metrics for a messaging profile.
additionalProperties: true
ProfileMetricsHighLevel:
type: object
description: High-level metrics summary for a messaging profile.
additionalProperties: true
ProfileSummary:
properties:
profile_id:
type: string
title: Profile Id
text:
anyOf:
- type: string
- type: 'null'
title: Text
description: The precomputed summary, ready to place in an assistant's context at the start of a session.
generated_at:
anyOf:
- type: string
- type: 'null'
title: Generated At
description: When the summary was last generated. Null while none is ready.
is_stale:
type: boolean
title: Is Stale
description: Whether newer memories have arrived since the summary was generated. The summary is regenerated in
the background, so a true here is ordinary and the summary is still usable.
type: object
required:
- profile_id
- is_stale
title: ProfileSummary
PromptSyncStatus:
type: string
enum:
- enabled
- disabled
title: PromptSyncStatus
description: 'Whether to auto-publish the assistant''s instructions as a Langfuse prompt.
When ENABLED + prompt_name set, every assistant create/update pushes
`instructions` to Langfuse via create_prompt and stores the returned
version in prompt_version.'
PronunciationDictAliasItem:
type: object
description: An alias pronunciation item. When the `text` value is found in input, it is replaced with the `alias` before
speech synthesis.
required:
- text
- type
- alias
additionalProperties: false
properties:
text:
type: string
description: The text to match in the input. Case-insensitive matching is used during synthesis.
minLength: 1
maxLength: 200
example: Telnyx
type:
type: string
description: The item type.
enum:
- alias
example: alias
alias:
type: string
description: The replacement text that will be spoken instead.
minLength: 1
maxLength: 500
example: tel-nicks
PronunciationDictData:
type: object
description: A pronunciation dictionary record.
properties:
record_type:
type: string
description: Identifies the resource type.
enum:
- pronunciation_dict
example: pronunciation_dict
id:
type: string
format: uuid
description: Unique identifier for the pronunciation dictionary.
example: c215a3e1-be41-4701-97e8-1d3c22f9a5b7
name:
type: string
description: Human-readable name for the dictionary. Must be unique within the organization.
example: Brand Names
items:
type: array
description: List of pronunciation items (alias or phoneme type).
items:
$ref: '#/components/schemas/PronunciationDictItem'
version:
type: integer
description: Auto-incrementing version number. Increases by 1 on each update. Used for optimistic concurrency control
and cache invalidation.
example: 1
created_at:
type: string
format: date-time
description: ISO 8601 timestamp with millisecond precision.
example: '2026-03-25T12:00:00.000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp with millisecond precision.
example: '2026-03-25T12:00:00.000Z'
PronunciationDictItem:
description: A single pronunciation dictionary item. Use type 'alias' to replace matched text with a spoken alias, or
type 'phoneme' to specify exact pronunciation using IPA notation.
oneOf:
- $ref: '#/components/schemas/PronunciationDictAliasItem'
- $ref: '#/components/schemas/PronunciationDictPhonemeItem'
discriminator:
propertyName: type
mapping:
alias: '#/components/schemas/PronunciationDictAliasItem'
phoneme: '#/components/schemas/PronunciationDictPhonemeItem'
PronunciationDictListResponse:
type: object
description: Paginated list of pronunciation dictionaries.
properties:
data:
type: array
items:
$ref: '#/components/schemas/PronunciationDictData'
description: Array of pronunciation dictionary objects.
meta:
$ref: '#/components/schemas/pronunciation-dicts_PaginationMeta'
PronunciationDictPhonemeItem:
type: object
description: A phoneme pronunciation item. When the `text` value is found in input, it is pronounced using the specified
IPA phoneme notation.
required:
- text
- type
- phoneme
- alphabet
additionalProperties: false
properties:
text:
type: string
description: The text to match in the input. Case-insensitive matching is used during synthesis.
minLength: 1
maxLength: 200
example: Telnyx
type:
type: string
description: The item type.
enum:
- phoneme
example: phoneme
phoneme:
type: string
description: The phoneme notation representing the desired pronunciation.
minLength: 1
maxLength: 500
example: ˈtɛl.nɪks
alphabet:
type: string
description: The phonetic alphabet used for the phoneme notation.
enum:
- ipa
example: ipa
PronunciationDictResponse:
type: object
description: Response containing a single pronunciation dictionary.
properties:
data:
$ref: '#/components/schemas/PronunciationDictData'
PublicInternetGateway:
allOf:
- $ref: '#/components/schemas/Record'
- $ref: '#/components/schemas/Interface'
- type: object
title: PublicInternetGateway
properties:
region_code:
description: The region interface is deployed to.
type: string
example: ashburn-va
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: public_internet_gateway
public_ip:
description: The publically accessible ip for this interface.
type: string
example: 127.0.0.1
readOnly: true
PublicInternetGatewayCreate:
allOf:
- $ref: '#/components/schemas/PublicInternetGateway'
- type: object
title: PublicInternetGatewayCreate
PublicInternetGatewayRead:
allOf:
- $ref: '#/components/schemas/PublicInternetGateway'
PublicTextClusteringRequest:
properties:
bucket:
type: string
description: The embedded storage bucket to compute the clusters from. The bucket must already be [embedded](https://developers.telnyx.com/api-reference/embeddings/embed-documents).
prefix:
type: string
description: Prefix to filter whcih files in the buckets are included.
files:
items:
type: string
type: array
description: Array of files to filter which are included.
min_cluster_size:
type: integer
description: Smallest number of related text chunks to qualify as a cluster. Top-level clusters should be thought
of as identifying broad themes in your data.
default: 25
min_subcluster_size:
type: integer
description: Smallest number of related text chunks to qualify as a sub-cluster. Sub-clusters should be thought
of as identifying more specific topics within a broader theme.
default: 5
type: object
required:
- bucket
title: PublicTextClusteringRequest
PushCredential:
type: object
title: Successful response with details about a push credential
required:
- id
- certificate
- private_key
- project_account_json_file
- alias
- type
- record_type
- created_at
- updated_at
properties:
id:
description: Unique identifier of a push credential
type: string
example: 0ccc7b54-4df3-4bcb-a65a-3da1ecc997d7
certificate:
description: Apple certificate for sending push notifications. For iOS only
type: string
example: '-----BEGIN CERTIFICATE----- MIIGVDCCBTKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END CERTIFICATE-----'
private_key:
description: Apple private key for a given certificate for sending push notifications. For iOS only
type: string
example: '-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAsNlRJVZn9ZvXcECQm65czs... -----END RSA PRIVATE KEY-----'
project_account_json_file:
description: Google server key for sending push notifications. For Android only
type: object
example:
private_key: BBBB0J56jd8kda:APA91vjb11BCjvxx3Jxja...
client_email: account@customer.org
additionalProperties: true
alias:
description: Alias to uniquely identify a credential
type: string
example: LucyCredential
type:
description: Type of mobile push credential. Either ios or android
type: string
example: ios
record_type:
type: string
example: push_credential
readOnly: true
created_at:
description: ISO 8601 timestamp when the room was created
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
updated_at:
description: ISO 8601 timestamp when the room was updated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
PushCredentialResponse:
description: Success response with details about a push credential
properties:
data:
$ref: '#/components/schemas/PushCredential'
type: object
Quality:
description: The quality of the fax. The `ultra` settings provides the highest quality available, but also present longer
fax processing times. `ultra_light` is best suited for images, wihle `ultra_dark` is best suited for text.
type: string
example: high
default: high
enum:
- normal
- high
- very_high
- ultra_light
- ultra_dark
QueryParameterInfo:
type: object
required:
- type
- default
- description
properties:
type:
type: string
default:
type: string
min:
type:
- integer
- 'null'
max:
type:
- integer
- 'null'
enum_values:
type:
- array
- 'null'
items:
type: string
description:
type: string
Queue:
type: object
title: Queue
required:
- record_type
- id
- name
- current_size
- max_size
- average_wait_time_secs
- created_at
- updated_at
properties:
record_type:
type: string
enum:
- queue
example: queue
id:
type: string
description: Uniquely identifies the queue
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name:
type: string
description: Name of the queue
example: support
created_at:
type: string
description: ISO 8601 formatted date of when the queue was created
example: '2019-01-23T18:10:02.574Z'
updated_at:
type: string
description: ISO 8601 formatted date of when the queue was last updated
example: '2019-01-23T18:10:02.574Z'
current_size:
type: integer
description: The number of calls currently in the queue
example: 20
max_size:
type: integer
description: The maximum number of calls allowed in the queue
example: 50
average_wait_time_secs:
type: integer
description: The average time that the calls currently in the queue have spent waiting, given in seconds.
example: 175
example:
record_type: queue
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name: support
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
current_size: 20
max_size: 50
average_wait_time_secs: 175
QueueCall:
type: object
title: QueueCall
required:
- call_control_id
- call_leg_id
- call_session_id
- is_alive
- record_type
- connection_id
- from
- to
- enqueued_at
- wait_time_secs
- queue_position
- queue_id
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_leg_id: 2dc6fc34-f9e0-11ea-b68e-02420a0f7768
call_session_id: 2dc1b3c8-f9e0-11ea-bc5a-02420a0f7768
record_type: queue_call
connection_id: 7267xxxxxxxxxxxxxx
from: '+18005550101'
to: '+18005550102'
enqueued_at: '2019-01-23T18:10:02.574Z'
wait_time_secs: 145
queue_position: 3
queue_id: ae1626cc-6f42-11ea-becd-02420a0f8b69
is_alive: true
properties:
record_type:
type: string
enum:
- queue_call
example: queue_call
call_session_id:
description: ID that is unique to the call session and can be used to correlate webhook events. Call session is
a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of
a transferred call
type: string
example: 428c31b6-7af4-4bcb-b68e-5013ef9657c1
call_leg_id:
description: ID that is unique to the call and can be used to correlate webhook events
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_control_id:
description: Unique identifier and token for controlling the call.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
from:
type: string
example: '+35319605860'
description: Number or SIP URI placing the call.
to:
type: string
example: '+13129457420'
description: Destination number or SIP URI of the call.
enqueued_at:
type: string
description: ISO 8601 formatted date of when the call was put in the queue
example: '2019-01-23T18:10:02.574Z'
wait_time_secs:
type: integer
description: The time the call has been waiting in the queue, given in seconds
example: 272
queue_position:
type: integer
description: Current position of the call in the queue
example: 3
queue_id:
type: string
description: Unique identifier of the queue the call is in.
example: ae1626cc-6f42-11ea-becd-02420a0f8b69
is_alive:
type: boolean
description: Indicates whether the call is still active in the queue.
example: true
QueueResource:
type: object
title: Queue resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
average_wait_time: 30
current_size: 3
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
max_size: 10
sid: my-queue
uri: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json
subresource_uris:
members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 4e71926f-8f13-450e-b91c-23c2ef786aa6
average_wait_time:
type: integer
description: The average wait time in seconds for members in the queue.
example: 30
current_size:
type: integer
description: The current number of members in the queue.
example: 3
date_created:
type: string
description: The timestamp of when the resource was created.
example: Fri, 27 Oct 2023 07:41:58 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Fri, 27 Oct 2023 07:41:58 +0000
max_size:
type: integer
description: The maximum size of the queue.
example: 10
sid:
type: string
description: The unique identifier of the queue.
example: my-queue
uri:
type: string
description: The relative URI for this queue.
example: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json
subresource_uris:
type: object
description: A list of related resources identified by their relative URIs.
example:
members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json
additionalProperties: true
QueueResourceIndex:
type: object
title: Multiple queue resources
example:
queues: []
end: 0
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
page: 0
page_size: 1
start: 0
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
properties:
queues:
type: array
items:
$ref: '#/components/schemas/QueueResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: 19
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
RCSAction:
type: object
description: When tapped, initiates the corresponding native action on the device.
properties:
text:
type: string
description: Text that is shown in the suggested action. Maximum 25 characters.
example: Hello world
postback_data:
type: string
description: Payload (base64 encoded) that will be sent to the agent in the user event that results when the user
taps the suggested action. Maximum 2048 characters.
fallback_url:
type: string
description: Fallback URL to use if a client doesn't support a suggested action. Fallback URLs open in new browser
windows. Maximum 2048 characters.
format: url
dial_action:
$ref: '#/components/schemas/RCSDialAction'
view_location_action:
$ref: '#/components/schemas/RCSViewLocationAction'
create_calendar_event_action:
$ref: '#/components/schemas/RCSCreateCalendarEventAction'
open_url_action:
$ref: '#/components/schemas/RCSOpenUrlAction'
share_location_action:
$ref: '#/components/schemas/RCSShareLocationAction'
RCSAgent:
type: object
properties:
agent_id:
type: string
description: RCS Agent ID
example: TestAgent
user_id:
type: string
description: User ID associated with the RCS Agent
example: 2ecf295b-36c6-4d43-ad05-71eb1e560518
profile_id:
type:
- string
- 'null'
format: uuid
description: Messaging profile ID associated with the RCS Agent
example: 4001932a-b8a3-42fc-9389-021be6388909
webhook_url:
type:
- string
- 'null'
format: url
description: URL to receive RCS events
example: http://example.com
webhook_failover_url:
type:
- string
- 'null'
format: url
description: Failover URL to receive RCS events
example: http://example.com
agent_name:
type: string
description: Human readable agent name
example: Test Agent
enabled:
type: boolean
description: Specifies whether the agent is enabled
example: true
created_at:
type: string
format: date-time
description: Date and time when the resource was created
example: '2024-01-01T12:00:00.000Z'
updated_at:
type: string
format: date-time
description: Date and time when the resource was updated
example: '2024-01-01T12:00:00.000Z'
RCSAgentMessage:
type: object
properties:
content_message:
$ref: '#/components/schemas/RCSContentMessage'
event:
$ref: '#/components/schemas/RCSEvent'
expire_time:
type: string
format: date-time
description: Timestamp in UTC of when this message is considered expired
example: '2024-10-02T15:01:23Z'
ttl:
type: string
description: Duration in seconds ending with 's'
example: 10.5s
RCSAgentResponse:
type: object
properties:
data:
$ref: '#/components/schemas/RCSAgent'
RCSAgentUpdate:
type: object
properties:
profile_id:
type:
- string
- 'null'
format: uuid
description: Messaging profile ID associated with the RCS Agent
example: 4001932a-b8a3-42fc-9389-021be6388909
webhook_url:
type:
- string
- 'null'
format: url
description: URL to receive RCS events
example: http://example.com
webhook_failover_url:
type:
- string
- 'null'
format: url
description: Failover URL to receive RCS events
example: http://example.com
RCSAgentsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RCSAgent'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta'
RCSCapabilitiesBulk:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RCSCapabilitiesInternal'
RCSCapabilitiesInternal:
type: object
properties:
record_type:
type: string
example: rcs.capabilities
enum:
- rcs.capabilities
description: Identifies the type of the resource
phone_number:
type: string
example: '+13125551234'
description: Phone number
agent_id:
type: string
example: TestAgent
description: RCS agent ID
agent_name:
type: string
example: Testing agent
description: RCS agent name
features:
type: array
description: List of RCS capabilities
items:
type: string
RCSCapabilitiesSingle:
type: object
properties:
data:
$ref: '#/components/schemas/RCSCapabilitiesInternal'
RCSCapabilityListRequest:
type: object
required:
- agent_id
- phone_numbers
properties:
agent_id:
type: string
description: RCS Agent ID
example: TestAgent
phone_numbers:
type: array
items:
type: string
example: '+13125551234'
description: List of phone numbers to check
RCSCardContent:
type: object
properties:
title:
type: string
description: Title of the card (at most 200 characters)
example: Elephant
description:
type: string
description: Description of the card (at most 2000 characters)
media:
$ref: '#/components/schemas/RCSMedia'
suggestions:
type: array
description: List of suggestions to include in the card. Maximum 10 suggestions.
items:
$ref: '#/components/schemas/RCSSuggestion'
RCSCarouselCard:
required:
- card_width
- card_contents
type: object
description: Carousel of cards.
properties:
card_width:
type: string
example: SMALL
description: The width of the cards in the carousel.
enum:
- CARD_WIDTH_UNSPECIFIED
- SMALL
- MEDIUM
card_contents:
description: The list of contents for each card in the carousel. A carousel can have a minimum of 2 cards and a
maximum 10 cards.
type: array
items:
$ref: '#/components/schemas/RCSCardContent'
RCSContentInfo:
required:
- file_url
type: object
properties:
file_url:
type: string
format: url
description: Publicly reachable URL of the file.
example: https://example.com/elephant.jpg
thumbnail_url:
type: string
format: url
description: Publicly reachable URL of the thumbnail. Maximum size of 100 kB.
force_refresh:
type: boolean
description: If set the URL content will not be cached.
RCSContentMessage:
type: object
properties:
suggestions:
type: array
description: List of suggested actions and replies
items:
$ref: '#/components/schemas/RCSSuggestion'
text:
type: string
description: Text (maximum 3072 characters)
example: Hello world!
rich_card:
$ref: '#/components/schemas/RCSRichCard'
content_info:
$ref: '#/components/schemas/RCSContentInfo'
RCSCreateCalendarEventAction:
type: object
description: Opens the user's default calendar app and starts the new calendar event flow with the agent-specified event
data pre-filled.
properties:
start_time:
type: string
format: date-time
example: '2024-10-02T15:01:23Z'
end_time:
type: string
format: date-time
example: '2024-10-02T15:02:31Z'
title:
type: string
description: Event title. Maximum 100 characters.
description:
type: string
description: Event description. Maximum 500 characters.
RCSDeeplinkResponse:
type: object
properties:
data:
type: object
properties:
url:
type: string
description: The generated deeplink URL
example: sms:+18445550001?service_id=my_agent_id%40rbm.goog&body=hello%20world
required:
- url
required:
- data
RCSDialAction:
required:
- phone_number
type: object
description: Opens the user's default dialer app with the agent-specified phone number filled in.
properties:
phone_number:
type: string
description: Phone number in +E.164 format
example: '+13125551234'
RCSEvent:
type: object
description: RCS Event to send to the recipient
properties:
event_type:
type: string
example: IS_TYPING
enum:
- TYPE_UNSPECIFIED
- IS_TYPING
- READ
RCSFrom:
type: object
properties:
agent_id:
type: string
example: Agent007
description: agent ID
carrier:
type: string
example: Telnyx
agent_name:
type: string
example: Test Agent
RCSLatLng:
required:
- latitude
- longitude
type: object
properties:
latitude:
type: number
description: The latitude in degrees. It must be in the range [-90.0, +90.0].
example: 41.8
longitude:
type: number
description: The longitude in degrees. It must be in the range [-180.0, +180.0].
example: -87.6
RCSMedia:
type: object
description: A media file within a rich card.
properties:
height:
type: string
example: MEDIUM
description: The height of the media within a rich card with a vertical layout. For a standalone card with horizontal
layout, height is not customizable, and this field is ignored.
enum:
- HEIGHT_UNSPECIFIED
- SHORT
- MEDIUM
- TALL
content_info:
$ref: '#/components/schemas/RCSContentInfo'
RCSMessage:
required:
- agent_id
- to
- messaging_profile_id
- agent_message
type: object
properties:
agent_id:
type: string
description: RCS Agent ID
example: Agent007
to:
type: string
description: Phone number in +E.164 format
example: '+13125551234'
messaging_profile_id:
type: string
description: A valid messaging profile ID
type:
type: string
description: Message type - must be set to "RCS"
example: RCS
enum:
- RCS
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
agent_message:
$ref: '#/components/schemas/RCSAgentMessage'
sms_fallback:
$ref: '#/components/schemas/SMSFallback'
mms_fallback:
$ref: '#/components/schemas/MMSFallback'
RCSOpenUrlAction:
required:
- url
- application
- webview_view_mode
type: object
description: Opens the user's default web browser app to the specified URL.
properties:
url:
type: string
format: url
example: http://example.com
application:
type: string
example: BROWSER
description: URL open application, browser or webview.
enum:
- OPEN_URL_APPLICATION_UNSPECIFIED
- BROWSER
- WEBVIEW
webview_view_mode:
type: string
example: HALF
enum:
- WEBVIEW_VIEW_MODE_UNSPECIFIED
- FULL
- HALF
- TALL
description:
type: string
description: Accessbility description for webview.
RCSReply:
type: object
properties:
text:
type: string
description: Text that is shown in the suggested reply (maximum 25 characters)
postback_data:
type: string
description: Payload (base64 encoded) that will be sent to the agent in the user event that results when the user
taps the suggested action. Maximum 2048 characters.
RCSResponse:
type: object
properties:
data:
type: object
properties:
record_type:
type: string
example: message
direction:
type: string
example: outbound
id:
type: string
description: message ID
example: 4031938e-60e4-4235-a8dd-0b1c55a23e7a
type:
type: string
example: RCS
organization_id:
type: string
example: 9f61d8e1-7687-4d6d-9cae-9ff682985983
messaging_profile_id:
type: string
example: 4001781e-626f-4a41-a914-b1b682150f94
from:
$ref: '#/components/schemas/RCSFrom'
to:
$ref: '#/components/schemas/RCSTo'
body:
$ref: '#/components/schemas/RCSAgentMessage'
encoding:
type: string
example: utf-8
received_at:
type: string
format: date-time
wait_seconds:
type:
- number
- 'null'
format: float
description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents
the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.
example: 0.5
RCSRichCard:
type: object
properties:
carousel_card:
$ref: '#/components/schemas/RCSCarouselCard'
standalone_card:
$ref: '#/components/schemas/RCSStandaloneCard'
RCSShareLocationAction:
type: object
description: Opens the RCS app's location chooser so the user can pick a location to send back to the agent.
RCSStandaloneCard:
required:
- card_orientation
- thumbnail_image_alignment
- card_content
type: object
description: Standalone card
properties:
card_orientation:
type: string
example: HORIZONTAL
description: Orientation of the card.
enum:
- CARD_ORIENTATION_UNSPECIFIED
- HORIZONTAL
- VERTICAL
thumbnail_image_alignment:
type: string
example: LEFT
description: Image preview alignment for standalone cards with horizontal layout.
enum:
- THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED
- LEFT
- RIGHT
card_content:
$ref: '#/components/schemas/RCSCardContent'
RCSSuggestion:
type: object
properties:
reply:
$ref: '#/components/schemas/RCSReply'
action:
$ref: '#/components/schemas/RCSAction'
RCSTestNumberInviteResponse:
type: object
properties:
data:
type: object
properties:
record_type:
type: string
example: rcs.test_number_invite
enum:
- rcs.test_number_invite
description: Identifies the type of the resource
agent_id:
type: string
example: TestAgent
description: RCS agent ID
phone_number:
type: string
example: '+13125551234'
description: Phone number that was invited for testing
status:
type: string
example: PENDING
description: Status of the test number invitation
required:
- data
RCSTo:
type: array
items:
$ref: '#/components/schemas/RCSToItem'
RCSToItem:
type: object
properties:
phone_number:
type: string
example: '+13125551234'
status:
type: string
example: queued
carrier:
type: string
example: Verizon Wireless
line_type:
type: string
example: Wireless
RCSViewLocationAction:
type: object
description: Opens the user's default map app and selects the agent-specified location.
properties:
lat_long:
$ref: '#/components/schemas/RCSLatLng'
label:
type: string
description: The label of the pin dropped
query:
type: string
description: query string (Android only)
ReadComment:
$ref: '#/components/schemas/Comment'
Reason:
type: string
enum:
- hard_bounce
- spam_complaint
- unsubscribe
- invalid
- manual_block
RecallRequest:
properties:
query:
type: string
maxLength: 4096
minLength: 1
title: Query
top_k:
anyOf:
- type: integer
maximum: 100.0
minimum: 1.0
- type: 'null'
title: Top K
type: object
required:
- query
title: RecallRequest
RecallResponse:
properties:
data:
items:
$ref: '#/components/schemas/RecalledMemory'
type: array
title: Data
type: object
required:
- data
title: RecallResponse
RecalledMemory:
properties:
id:
type: string
title: Id
text:
type: string
title: Text
recorded_at:
anyOf:
- type: string
- type: 'null'
title: Recorded At
score:
anyOf:
- type: number
minimum: 0
maximum: 1
- type: 'null'
title: Score
description: Relevance, 0-1. Null where the deployment's reranker is a passthrough; results are in rank order either
way.
type: object
required:
- id
- text
title: RecalledMemory
RecipientSuppressedError:
type: object
description: Non-standard error envelope returned when all recipients are suppressed and ignore_suppression was not
set/allowed. Includes a top-level `suppressed` array alongside `errors`.
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
enum:
- recipient_suppressed
title:
type: string
detail:
type: string
suppressed:
type: array
items:
type: object
properties:
to:
type: string
format: email
reason:
type: string
scope:
type: string
override_allowed:
type: boolean
Record:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: sample_record_type
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
RecordType:
type: string
description: Identifies record type.
enum:
- custom_storage_credentials
RecordTypeInfo:
type: object
required:
- record_type
- aliases
- product
- event
- description
- child_relationships
- parent_relationships
properties:
record_type:
type: string
aliases:
type: array
items:
type: string
product:
type: string
event:
type: string
description:
type: string
child_relationships:
type: array
items:
$ref: '#/components/schemas/ChildRelationshipInfo'
parent_relationships:
type: array
items:
$ref: '#/components/schemas/ParentRelationshipInfo'
RecordTypeMetadataResponse:
type: object
required:
- record_type
- aliases
- product
- event
- child_relationships
- parent_relationships
- examples
- meta
properties:
record_type:
type: string
aliases:
type: array
items:
type: string
product:
type: string
event:
type: string
child_relationships:
type: array
items:
$ref: '#/components/schemas/ChildRelationshipInfo'
parent_relationships:
type: array
items:
$ref: '#/components/schemas/ParentRelationshipInfo'
examples:
type: object
additionalProperties: true
description: Example queries and responses for this record type.
meta:
$ref: '#/components/schemas/RelationshipMetadata'
RecordingResponse:
type: object
title: RecordingResponse
properties:
data:
$ref: '#/components/schemas/RecordingResponseData'
RecordingResponseData:
type: object
title: RecordingResponseData
properties:
call_control_id:
type: string
example: v3:e-31OnvjEM7Y4wvxr3TKNk8M3QyLcGZPiUIzCGtwQtOtEjY-B0urkw
description: Unique identifier and token for controlling the call.
call_leg_id:
type: string
example: 84a97d76-e40f-11ed-9074-02420a0daa69
description: ID unique to the call leg (used to correlate webhook events).
call_session_id:
type: string
example: 84a97d76-e40f-11ed-9074-02420a0daa69
description: ID that is unique to the call session and can be used to correlate webhook events. Call session is
a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound leg of
a transferred call.
channels:
type: string
enum:
- single
- dual
description: When `dual`, the final audio file has the first leg on channel A, and the rest on channel B.
example: dual
conference_id:
type: string
example: 84a97d76-e40f-11ed-9074-02420a0daa69
description: Uniquely identifies the conference.
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
download_urls:
type: object
description: Links to download the recording files.
properties:
mp3:
type: string
description: Link to download the recording in mp3 format.
wav:
type: string
description: Link to download the recording in wav format.
duration_millis:
description: The duration of the recording in milliseconds.
type: integer
format: int32
example: 60000
id:
type: string
description: Uniquely identifies the recording.
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type:
type: string
enum:
- recording
example: recording
recording_started_at:
type: string
description: ISO 8601 formatted date of when the recording started.
example: '2019-01-23T18:10:02.574Z'
recording_ended_at:
type: string
description: ISO 8601 formatted date of when the recording ended.
example: '2019-01-23T18:10:02.574Z'
source:
type: string
enum:
- conference
- call
description: The kind of event that led to this recording being created.
example: conference
status:
type: string
enum:
- completed
description: The status of the recording. Only `completed` recordings are currently supported.
example: completed
from:
type: string
description: The `from` (caller) number for the call that generated this recording.
example: '+15551234567'
to:
type: string
description: The `to` (callee) number for the call that generated this recording.
example: '+15557654321'
connection_id:
type: string
description: Identifies the Telnyx application (Call Control, TeXML) or SIP connection resource associated with
this recording.
example: '175237942907135762'
initiated_by:
type: string
description: Indicates what triggered the recording. Possible values include `DialVerb`, `Conference`, `OutboundAPI`,
`Trunking`, `RecordVerb`, `StartCallRecordingAPI`, `StartConferenceRecordingAPI`.
example: StartCallRecordingAPI
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
RecordingSource:
type: string
description: Defines how the recording was created.
enum:
- StartCallRecordingAPI
- StartConferenceRecordingAPI
- OutboundAPI
- DialVerb
- Conference
- RecordVerb
- Trunking
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can be:
`in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
RecordingTranscription:
type: object
title: RecordingTranscriptionsResponseData
properties:
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
duration_millis:
description: The duration of the recording transcription in milliseconds.
type: integer
format: int32
example: 60000
id:
type: string
description: Uniquely identifies the recording transcription.
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
recording_id:
type: string
description: Uniquely identifies the recording associated with this transcription.
example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
record_type:
type: string
enum:
- recording_transcription
example: recording_transcription
status:
type: string
enum:
- in-progress
- completed
description: The status of the recording transcription. Only `completed` has transcription text available.
example: completed
transcription_text:
type: string
description: The recording's transcribed text.
example: Good morning, how may I help you?
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
RecursiveCluster:
properties:
cluster_id:
type: string
cluster_header:
type: string
cluster_summary:
type: string
nodes:
items:
$ref: '#/components/schemas/ClusterNode'
type: array
total_number_of_nodes:
type: integer
subclusters:
items:
$ref: '#/components/schemas/RecursiveCluster'
type: array
type: object
required:
- cluster_id
- cluster_summary
- total_number_of_nodes
title: RecursiveCluster
ReferRequest:
type: object
title: Refer request
required:
- sip_address
properties:
sip_address:
description: The SIP URI to which the call will be referred to.
type: string
example: sip:username@sip.non-telnyx-address.com
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
example: aGF2ZSBhIG5pY2UgZGF5ID1d
type: string
command_id:
description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with
the same `command_id` as one that has already been executed.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
type: string
custom_headers:
description: Custom headers to be added to the SIP INVITE.
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
sip_auth_username:
description: SIP Authentication username used for SIP challenges.
type: string
sip_auth_password:
description: SIP Authentication password used for SIP challenges.
type: string
sip_headers:
description: SIP headers to be added to the request. Currently only User-to-User header is supported.
type: array
example:
- name: User-to-User
value: value
items:
$ref: '#/components/schemas/SipHeader'
example:
sip_address: sip:username@sip.non-telnyx-address.com
Reference:
type: object
description: A reference (business or financial) on a DIR, in the customer-facing shape. No internal identifiers are
exposed.
required:
- record_type
- ref_type
- slot
- full_name
- phone_e164
- timezone
properties:
record_type:
type: string
enum:
- dir_reference
description: Always `dir_reference`.
example: dir_reference
readOnly: true
ref_type:
type: string
enum:
- business
- financial
description: Whether this is a business reference or the financial reference.
example: business
slot:
type: integer
minimum: 1
maximum: 2
description: Position within the reference type, counting from 1. Business references occupy slots 1 and 2, in the
order they were sent in the `business_references` array; the financial reference occupies slot 1. Use this value
together with `ref_type` to address the reference when updating it.
example: 1
full_name:
type: string
maxLength: 255
description: Full name of the reference contact.
example: Dana Reyes
job_title:
type: string
maxLength: 255
nullable: true
description: Job title of the reference contact.
example: VP of Operations
organization:
type: string
maxLength: 255
nullable: true
description: Organization the reference contact belongs to.
example: Acme Logistics
relationship_to_registrant:
type: string
maxLength: 255
nullable: true
description: How the reference contact is related to the registering business.
example: Supplier
phone_e164:
type: string
description: Reference phone number in E.164 format.
example: '+14155550123'
email:
type: string
format: email
nullable: true
description: Reference contact email address.
example: dana.reyes@example.com
timezone:
type: string
description: IANA timezone id for the reference. Calls are only placed within the reference's local 8am-9pm window.
example: America/New_York
ReferenceInput:
type: object
description: One reference supplied at submit. The reference type is implied by the field that carries it (business_references
vs financial_reference).
required:
- full_name
- phone_e164
- email
- timezone
properties:
full_name:
type: string
minLength: 1
maxLength: 255
description: Full name of the reference contact.
example: Dana Reyes
job_title:
type: string
maxLength: 255
nullable: true
description: Job title of the reference contact.
example: VP of Operations
organization:
type: string
maxLength: 255
nullable: true
description: Organization the reference contact belongs to.
example: Acme Logistics
relationship_to_registrant:
type: string
maxLength: 255
nullable: true
description: How the reference contact is related to the registering business.
example: Supplier
phone_e164:
type: string
pattern: ^\+[1-9]\d{1,14}$
description: Reference phone number in E.164 format, e.g. +14155550123.
example: '+14155550123'
email:
type: string
format: email
description: 'Reference contact email address. Required: the reference is emailed scheduling and dial-in notices.'
example: dana.reyes@example.com
timezone:
type: string
description: 'IANA timezone id for the reference (e.g. America/New_York). Required: calls are only placed within
the reference''s local 8am-9pm window.'
example: America/New_York
ReferenceList:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Reference'
ReferenceSubmissionRequest:
type: object
description: Exactly two business references plus one financial reference.
required:
- business_references
- financial_reference
properties:
business_references:
type: array
minItems: 2
maxItems: 2
description: 'Exactly two business references. Array order determines each one''s slot: the first entry becomes
slot 1 and the second becomes slot 2. Those slots are what you pass when updating a single reference later. Each
should be a senior contact who can speak to your company''s reputation and operations: a C-suite executive (CEO,
CFO, CTO, COO), an owner or founder as reflected in your corporate records, or a senior manager, director, or
executive at an organization you work with, such as a vendor, partner, or client.'
items:
$ref: '#/components/schemas/ReferenceInput'
financial_reference:
description: 'One financial reference who can confirm the company pays its bills: a licensed certified public accountant
(CPA) the company uses, a contact at a bank or financial institution that has a relationship with the company,
or a reasonable alternative banking or financial reference.'
allOf:
- $ref: '#/components/schemas/ReferenceInput'
ReferenceUpdateRequest:
type: object
minProperties: 1
description: Partial update for a single reference; supply at least one field. Cosmetic fields are always editable.
phone_e164 and timezone may only be changed while a scheduled call has not yet been dialed.
properties:
full_name:
type: string
minLength: 1
maxLength: 255
description: The full name of the person we should contact as your reference.
example: Dana Reyes
job_title:
type: string
maxLength: 255
nullable: true
description: The reference contact's job title, for example CFO or Owner.
example: VP of Operations
organization:
type: string
maxLength: 255
nullable: true
description: The name of the organization the reference contact works for.
example: Acme Logistics
relationship_to_registrant:
type: string
maxLength: 255
nullable: true
description: How the reference contact is related to the registering business.
example: Supplier
phone_e164:
type: string
pattern: ^\+[1-9]\d{1,14}$
description: The reference's phone number in E.164 format, for example +14155550123. We call this number during
their local business hours.
example: '+14155550123'
email:
type: string
format: email
description: The reference's email address. We email them scheduling and dial-in instructions before we call, so
use an address they check.
example: dana.reyes@example.com
timezone:
type: string
description: The reference's IANA time zone, for example America/New_York. We only call during their local 8am to
9pm hours, which is why we need it.
example: America/New_York
ReferenceWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Reference'
RefreshReputationRequest:
type: object
required:
- phone_numbers
additionalProperties: false
properties:
phone_numbers:
type: array
items:
type: string
example: '+19493253498'
minItems: 1
maxItems: 100
description: Phone numbers to refresh reputation data for. 1–100 numbers per request, each in E.164 format. Reputation
refreshes are subject to per-enterprise rate limits.
RefreshReputationResponse:
type: object
required:
- data
properties:
data:
type: object
required:
- results
- total_requested
- total_successful
- total_failed
properties:
results:
type: array
description: Per-number outcome of the refresh.
items:
type: object
required:
- phone_number
- success
properties:
phone_number:
type: string
example: '+19493253498'
success:
type: boolean
example: true
error:
type:
- string
- 'null'
description: '`null` when `success` is `true`; carries an error message otherwise.'
example: null
total_requested:
type: integer
example: 1
total_successful:
type: integer
example: 1
total_failed:
type: integer
example: 0
RefreshRoomClientTokenRequest:
type: object
properties:
token_ttl_secs:
description: The time to live in seconds of the Client Token, after that time the Client Token is invalid and can't
be used to join a Room.
type: integer
example: 600
default: 600
minimum: 10
maximum: 3600
refresh_token:
type: string
example: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ
required:
- refresh_token
Region:
description: Region where the bucket is located.
type: string
example: us-east-1
RegionIn:
type: object
properties:
region_code:
description: The region the interface should be deployed to.
type: string
example: ashburn-va
RegionInformation:
properties:
region_type:
type: string
example: country_code
enum:
- country_code
- rate_center
- state
- location
region_name:
type: string
example: US
example:
region_type: country_code
region_name: US
type: object
RegionOut:
type: object
properties:
region_code:
description: The region interface is deployed to.
type: string
example: ashburn-va
region:
type: object
properties:
code:
description: Region code of the interface.
type: string
example: ashburn-va
name:
description: Region name of the interface.
type: string
example: Ashburn
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: region
RegulatoryRequirement:
type: object
properties:
record_type:
type: string
requirement_id:
type: string
format: uuid
field_type:
type: string
RegulatoryRequirements:
properties:
country_code:
type: string
example: DE
readOnly: true
phone_number_type:
type: string
example: local
readOnly: true
action:
type: string
example: ordering
readOnly: true
regulatory_requirements:
type: array
items:
type: object
properties:
description:
type: string
example: Address matching the DID area code (street, building number, postal code, city and country)
readOnly: true
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
example:
type: string
example: 600 Congress Avenue, 14th Floor, Austin, TX 78701
readOnly: true
name:
type: string
example: Address matching the DID area code
field_type:
type: string
example: address_id
acceptance_criteria:
type: object
properties:
locality_limit:
type: string
example: Identical locality as the numbers desired
time_limit:
type: string
example: Less than 5 months old
regex:
type: string
example: regex field value must match
case_sensitive:
type: string
example: Whether field value is case sensitive
acceptable_characters:
type: string
example: Characters that can be included in field value
acceptable_values:
type: array
items:
type: string
max_length:
type: string
example: '10'
min_length:
type: string
example: '5'
type: object
RegulatoryRequirementsPhoneNumbers:
properties:
phone_number:
type: string
example: '+41215471644'
readOnly: true
phone_number_type:
type: string
example: local
readOnly: true
region_information:
type: array
items:
type: object
properties:
region_name:
type: string
example: CH
region_type:
type: string
example: country_code
record_type:
type: string
example: phone_number_regulatory_requirements
readOnly: true
regulatory_requirements:
type: array
items:
type: object
properties:
description:
type: string
example: Address matching the DID area code (street, building number, postal code, city and country)
readOnly: true
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
example:
type: string
example: 600 Congress Avenue, 14th Floor, Austin, TX 78701
readOnly: true
label:
type: string
example: Address matching the DID area code
field_type:
type: string
example: address_id
acceptance_criteria:
type: object
properties:
locality_limit:
type: string
example: Identical locality as the numbers desired
field_value:
type: string
example: 45f45a04-b4be-4592-95b1-9306b9db2b21
field_type:
type: string
example: address
record_type:
type: string
example: regulatory_requirement
readOnly: true
type: object
RejectRequest:
type: object
title: Reject Request
required:
- cause
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
cause:
description: 'Cause for call rejection. The cause sets the SIP response the caller receives: `USER_BUSY` sends 486
User Busy, `CALL_REJECTED` sends 603 Decline, `NOT_FOUND` sends 404 Not Found, and `TEMPORARILY_UNAVAILABLE` sends
480 Temporarily Unavailable.'
type: string
enum:
- CALL_REJECTED
- NOT_FOUND
- TEMPORARILY_UNAVAILABLE
- USER_BUSY
example: USER_BUSY
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
cause: USER_BUSY
RejectionReason:
type: object
properties:
code:
type: string
example: documentation_incomplete
title:
type: string
example: Documentation incomplete
detail:
type: string
example: Provided documents do not establish business identity.
message:
type: string
nullable: true
description: Customer-visible free-text comment from the Telnyx vetting team. Only the first entry of `rejection_reasons`
carries this; the rest are `null`.
example: Please re-upload a clearer scan of the certificate.
RelationshipInfo:
type: object
required:
- type
- via
- parent_id
properties:
type:
type: string
description: Relationship type identifier.
via:
$ref: '#/components/schemas/FieldMapping'
parent_id:
type: string
description: Identifier of the parent event.
RelationshipMetadata:
type: object
required:
- total_children
- total_siblings
- total_parents
- max_recommended_depth
properties:
total_children:
type: integer
total_siblings:
type: integer
total_parents:
type: integer
max_recommended_depth:
type: integer
Release:
type: object
title: Phone Number Release
properties:
ticket_id:
$ref: '#/components/schemas/UUID'
tenant_id:
type: string
format: uuid
example: ea175aba-f47c-4702-9400-efaa42688048
status:
type: string
enum:
- pending_upload
- pending
- in_progress
- complete
- failed
- expired
- unknown
description: Represents the status of the release on Microsoft Teams.
example: pending
default: pending_upload
error_message:
type: string
description: A message set if there is an error with the upload process.
telephone_numbers:
type: array
items:
$ref: '#/components/schemas/TnReleaseEntry'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
RemediationPerNumberResults:
type: object
description: Per-category buckets of phone numbers, populated once results are available. Empty lists are kept (not
omitted) so consumers can iterate without null-checking each key.
properties:
remediated:
type: array
items:
type: string
example: '+19493253498'
not_flagged:
type: array
items:
type: string
requires_review:
type: array
items:
type: string
ineligible:
type: array
items:
type: string
refused:
type: array
items:
type: string
RemediationRequest:
type: object
description: Full detail of a remediation request, returned on submit and GET by id.
required:
- id
- status
- phone_numbers_count
- phone_numbers_submitted
- phone_numbers_ineligible
- call_purpose
- created_at
- updated_at
properties:
id:
type: string
format: uuid
example: b7c1f1c0-7a9d-4f0a-9d3e-2f6a1c4b8e21
status:
$ref: '#/components/schemas/RemediationStatus'
phone_numbers_count:
type: integer
description: Total phone numbers in this batch, including any later cancelled. May exceed the sum of the per-category
result buckets, which omit cancelled numbers.
example: 2
phone_numbers_submitted:
type: integer
description: Numbers accepted for remediation, i.e. not rejected as ineligible. Counts numbers still queued (pending)
as well as processed ones.
example: 2
phone_numbers_ineligible:
type: integer
description: Numbers rejected before submission (e.g. cooldown).
example: 0
call_purpose:
type: string
example: Appointment reminders for our dental clinic.
contact_email:
type:
- string
- 'null'
format: email
example: ops@example.com
webhook_url:
type:
- string
- 'null'
format: uri
example: https://example.com/webhooks/remediation
created_at:
type: string
format: date-time
example: '2026-06-01T12:00:00Z'
updated_at:
type: string
format: date-time
example: '2026-06-01T12:05:00Z'
tier1_completed_at:
type:
- string
- 'null'
format: date-time
tier2_completed_at:
type:
- string
- 'null'
format: date-time
results:
anyOf:
- $ref: '#/components/schemas/RemediationPerNumberResults'
- type: 'null'
description: Per-category buckets. Populated once results are available. Null while the request is still pending.
RemediationRequestCreate:
type: object
additionalProperties: false
required:
- phone_numbers
- call_purpose
properties:
phone_numbers:
type: array
description: Phone numbers in E.164 format. Each must belong to this enterprise. Maximum 2,000 per request.
minItems: 1
maxItems: 2000
items:
type: string
pattern: ^\+[1-9][0-9]{9,14}$
example: '+19493253498'
call_purpose:
type: string
description: How the numbers are used (free text).
minLength: 1
maxLength: 2000
example: Appointment reminders for our dental clinic.
contact_email:
type: string
format: email
description: Optional contact email for this remediation request.
maxLength: 255
example: ops@example.com
webhook_url:
type: string
format: uri
description: Optional https:// URL for status notifications.
maxLength: 2048
example: https://example.com/webhooks/remediation
RemediationRequestList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/RemediationRequestListItem'
meta:
$ref: '#/components/schemas/number-reputation_PaginationMeta'
RemediationRequestListItem:
type: object
description: Slim list-endpoint shape. Omits per-number results and webhook URLs to keep responses small.
required:
- id
- status
- phone_numbers_count
- call_purpose
- created_at
- updated_at
properties:
id:
type: string
format: uuid
example: b7c1f1c0-7a9d-4f0a-9d3e-2f6a1c4b8e21
status:
$ref: '#/components/schemas/RemediationStatus'
phone_numbers_count:
type: integer
example: 2
call_purpose:
type: string
example: Appointment reminders for our dental clinic.
created_at:
type: string
format: date-time
example: '2026-06-01T12:00:00Z'
updated_at:
type: string
format: date-time
example: '2026-06-01T12:05:00Z'
tier1_completed_at:
type:
- string
- 'null'
format: date-time
tier2_completed_at:
type:
- string
- 'null'
format: date-time
RemediationRequestWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/RemediationRequest'
RemediationStatus:
type: string
description: Customer-facing status of a remediation request.
enum:
- pending
- in_progress
- completed
- failed
- cancelled
example: in_progress
RememberRequest:
properties:
text:
type: string
minLength: 1
title: Text
type: object
required:
- text
title: RememberRequest
RememberResponse:
properties:
data:
$ref: '#/components/schemas/AcceptedMemory'
type: object
required:
- data
title: RememberResponse
RenderEmailTemplateRequest:
type: object
properties:
template_variables:
type: object
default: {}
additionalProperties: true
description: Variables for Liquid template rendering. Non-object values are silently treated as an empty object.
RenderErrorObject:
type: object
properties:
code:
type: string
enum:
- render_error
message:
type: string
required:
- code
- message
RenderErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/RenderErrorObject'
required:
- errors
RenderedEmailTemplate:
allOf:
- $ref: '#/components/schemas/EmailTemplateCommon'
- type: object
description: Template object with `subject`, `html_body`, and `text_body` replaced by their Liquid-rendered values.
Rendered content is not limited by the stored template-field lengths. All other template fields remain unchanged.
properties:
subject:
type: string
nullable: true
required:
- subject
RenderedEmailTemplateResponse:
type: object
properties:
data:
$ref: '#/components/schemas/RenderedEmailTemplate'
required:
- data
ReplaceInboxFiltersRequest:
type: object
description: 'The complete filter configuration. An omitted list is replaced with an
empty list. Unknown keys are ignored by the controller.
'
properties:
allowlist:
$ref: '#/components/schemas/InboxFilterEntryList'
blocklist:
$ref: '#/components/schemas/InboxFilterEntryList'
ReplaceSourcesRequest:
type: object
required:
- sources
properties:
sources:
type: array
items:
$ref: '#/components/schemas/SourceRequest'
ReplacedLinkClick:
type: object
properties:
record_type:
type: string
example: link_clicked
description: Identifies the type of the resource.
url:
type: string
example: link_clicked
description: The original link that was sent in the message.
to:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
message_id:
type: string
format: uuid
description: The message ID associated with the clicked link.
time_clicked:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
example:
record_type: link_clicked
url: https://telnyx.com
to: '18445550001'
message_id: 7ee4241c-f127-47e5-9c34-3aac291f8058
time_clicked: '2019-04-01T14:45:45.450Z'
ReplacedLinkClickEvent:
type: object
properties:
data:
$ref: '#/components/schemas/ReplacedLinkClick'
ReplyEmailInboxMessageRequest:
type: object
description: At least one of `text` or `html` must contain a non-whitespace body. Recipients are derived from the source
message; caller-supplied `to`, `cc`, or `bcc` values are ignored.
properties:
text:
type: string
minLength: 1
pattern: \S
description: Plain-text reply body.
html:
type: string
minLength: 1
pattern: \S
description: HTML reply body.
anyOf:
- required:
- text
- required:
- html
ReputationCheckFrequency:
type: string
enum:
- business_daily
- daily
- weekly
- biweekly
- monthly
- never
description: How often Telnyx refreshes the stored reputation data for this enterprise's registered numbers.
ReputationData:
type: object
description: Reputation snapshot for a phone number. Each metric is a 0–100 score; `spam_risk` is a coarse bucket. Field
set may grow over time - read by key.
properties:
spam_risk:
type:
- string
- 'null'
enum:
- low
- medium
- high
- null
description: Overall spam-risk classification.
example: low
spam_category:
type:
- string
- 'null'
description: Category label from the reputation feed when the number is flagged.
example: null
maturity_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
example: 72
connection_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
example: 80
engagement_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
example: 64
sentiment_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
example: 75
last_refreshed_at:
type:
- string
- 'null'
format: date-time
example: '2026-04-26T18:09:24.785211Z'
ReputationLoaStatusPublic:
type: string
enum:
- pending
- approved
- rejected
description: Customer-facing Letter-of-Authorization verification state. `approved` is required (alongside reputation
status) before phone numbers can be added.
example: pending
ReputationNumberOwnership:
type: object
properties:
phone_number:
type: string
example: '+19493253498'
source:
$ref: '#/components/schemas/ReputationNumberSource'
ownership_status:
$ref: '#/components/schemas/ReputationOwnershipStatus'
flag_reason:
type:
- string
- 'null'
example: null
confirm_by:
type:
- string
- 'null'
format: date-time
example: null
last_checked_at:
type:
- string
- 'null'
format: date-time
description: When ownership of the number was last checked.
example: '2026-10-05T06:00:41Z'
baseline_carrier:
type:
- string
- 'null'
description: Service provider ID (SPID) of the carrier that held the number when its ownership was last established.
example: 114J
baseline_recorded_at:
type:
- string
- 'null'
format: date-time
example: '2026-09-20T15:22:09Z'
history:
type: array
items:
$ref: '#/components/schemas/ReputationNumberOwnershipEvent'
description: Ownership events, most recent first.
ReputationNumberOwnershipEvent:
type: object
properties:
event_type:
type: string
description: '`added`, `check`, `flag`, `confirm` or `removed`.'
example: check
outcome:
type:
- string
- 'null'
description: What the event found or did, for example `unchanged` or `carrier_changed`.
example: unchanged
occurred_at:
type: string
format: date-time
example: '2026-10-05T06:00:41Z'
ReputationNumberOwnershipWrapped:
type: object
properties:
data:
$ref: '#/components/schemas/ReputationNumberOwnership'
required:
- data
ReputationNumberSource:
type: string
enum:
- telnyx
- external
description: 'Where the phone number is hosted. `telnyx`: in your Telnyx inventory. `external`: a number you own that
is hosted with another provider.'
example: external
ReputationOwnershipStatus:
type: string
enum:
- verified
- flagged
- pending_confirmation
- removed
description: 'Result of ongoing ownership checks. `verified`: the number is with the carrier on record. `pending_confirmation`:
the number''s carrier changed, or a periodic ownership re-verification is due; confirm you still own it before `confirm_by`.
`flagged`: a periodic re-verification went unanswered; the number stays monitored and is not removed, but confirm
ownership (`POST .../ownership_confirm`) to return it to `verified`. `removed`: the number is no longer monitored;
returned by `POST .../ownership_confirm` with `still_own: false`, and when listing numbers with `filter[ownership_status]=removed`.'
example: verified
ReputationPhoneNumber:
type: object
properties:
id:
type: string
format: uuid
example: 8a4b1f5e-2f12-4c0c-9a98-9b3a7d8b8e62
readOnly: true
enterprise_id:
type: string
format: uuid
example: 4a6192a4-573d-446d-b3ce-aff9117272a6
phone_number:
type: string
description: E.164 with leading `+`.
example: '+19493253498'
source:
$ref: '#/components/schemas/ReputationNumberSource'
ownership_status:
$ref: '#/components/schemas/ReputationOwnershipStatus'
flag_reason:
type:
- string
- 'null'
description: Why the number's ownership was flagged. `carrier_changed` when an ownership check found the number
with a different carrier.
example: carrier_changed
confirm_by:
type:
- string
- 'null'
format: date-time
description: Deadline to confirm you still own the number. Set only while `ownership_status` is `pending_confirmation`.
example: '2026-10-08T07:00:00Z'
removed_at:
type:
- string
- 'null'
format: date-time
description: When the number was removed. Set only for removed numbers.
example: '2026-10-09T06:02:11Z'
removal_reason:
anyOf:
- $ref: '#/components/schemas/ReputationRemovalReason'
- type: 'null'
description: Why the number was removed. Set only for removed numbers.
reputation_data:
anyOf:
- $ref: '#/components/schemas/ReputationData'
- type: 'null'
description: '`null` until the first refresh has been collected for this number.'
created_at:
type: string
format: date-time
example: '2026-04-26T18:06:51.940749Z'
readOnly: true
updated_at:
type: string
format: date-time
example: '2026-04-26T18:09:24.785211Z'
readOnly: true
ReputationPhoneNumberCreate:
type: object
required:
- phone_numbers
additionalProperties: false
properties:
phone_numbers:
type: array
items:
type: string
example: '+19493253498'
minItems: 1
maxItems: 100
description: 1–100 phone numbers in E.164 format with a leading `+`.
ReputationPhoneNumberList:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/ReputationPhoneNumber'
meta:
$ref: '#/components/schemas/number-reputation_PaginationMeta'
ReputationPhoneNumberListWithReputation:
description: List of reputation-monitored phone numbers, each carrying its current reputation data.
allOf:
- $ref: '#/components/schemas/ReputationPhoneNumberList'
ReputationPhoneNumberWithReputation:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/ReputationPhoneNumber'
ReputationRemovalReason:
type: string
enum:
- ported_away
- unconfirmed_ownership
- reassigned
- customer_reported
- customer_removed
description: 'Why a number was removed. `ported_away`: you confirmed the number left your control after a carrier change.
`unconfirmed_ownership`: a carrier change was not confirmed before the deadline. `reassigned`: the number was reported
as permanently disconnected. `customer_reported`: you reported that you no longer own the number. `customer_removed`:
you removed the number.'
example: unconfirmed_ownership
ReputationStatus:
type: string
enum:
- pending
- approved
- deleted
- rejected
description: Lifecycle status of the enterprise's Phone Number Reputation activation.
ReputationSuspendedError:
type: object
description: Non-standard error envelope returned when the sending domain's reputation band is 'poor'. Uses string code
`reputation_suspended` instead of a numeric code.
required:
- errors
properties:
errors:
type: array
minItems: 1
maxItems: 1
items:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- reputation_suspended
title:
type: string
example: Sending Suspended
detail:
type: string
RequestMetadata:
type: object
description: 'Customer request tags from the x-ltg-metadata header: up to 5 entries. Keys are case-sensitive; keys starting
with ltg_, telnyx_, litellm_ or cf_ (any case) are reserved. Values are strings (1-256 characters, no control or format
characters), integers within +/-9007199254740991, or booleans; floats, null, objects and arrays are rejected. Values
that look like credentials are rejected. Tags are attribution only: never forwarded upstream, never part of the response
cache key, never used for budgets or routing. An untagged request reports {}.'
maxProperties: 5
propertyNames:
pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$
additionalProperties:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f-\u009f]+$
- type: integer
minimum: -9007199254740991
maximum: 9007199254740991
- type: boolean
RequiredInboxActionRecipientInput:
description: One recipient or a non-empty recipient array. Each recipient may be an email string or an object with `email`
and optional `name`.
oneOf:
- $ref: '#/components/schemas/InboxActionEmailAddressInput'
- type: array
minItems: 1
items:
$ref: '#/components/schemas/InboxActionEmailAddressInput'
RequirementGroup:
type: object
properties:
id:
type: string
country_code:
type: string
phone_number_type:
type: string
status:
type: string
enum:
- approved
- unapproved
- pending-approval
- declined
- expired
action:
type: string
customer_reference:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
record_type:
type: string
example: requirement_group
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/UserRequirement'
RescheduleEmailMessageRequest:
type: object
description: Only the delivery time is mutable; any other request fields are ignored.
properties:
scheduled_at:
type: string
format: date-time
description: New ISO 8601 delivery time. Must be strictly in the future.
required:
- scheduled_at
ResearchCitation:
type: object
required:
- url
- title
properties:
url:
type: string
format: uri
description: Source URL.
title:
type: string
description: Title of the source page.
snippet:
type: string
description: Relevant excerpt from the source (if available).
ResearchRequest:
type: object
required:
- query
properties:
query:
type: string
minLength: 1
maxLength: 2000
description: The research question or topic.
example: Compare the performance of RAG vs fine-tuning for domain-specific QA
research_effort:
type: string
enum:
- lite
- standard
- deep
description: Research depth level. `lite` is fastest, `deep` is most thorough.
example: standard
max_sources:
type: integer
minimum: 1
maximum: 50
description: Maximum number of sources to use.
example: 20
background:
type: boolean
description: When `true`, the research runs asynchronously. The response returns a `task_id` immediately instead
of waiting for the result. Poll `GET /web_search/research/{task_id}` to check status.
example: false
ResearchResponseAsync:
type: object
description: Asynchronous research response (when `background` is true).
required:
- task_id
- status
properties:
task_id:
type: string
description: Unique identifier for the research task. Use this to poll the status.
example: bf3026a5-dd57-44dd-b922-200041be3a4b
status:
type: string
enum:
- pending
- running
- completed
- failed
description: Current status of the research task.
example: pending
ResearchResponseSync:
type: object
description: Synchronous research response (when `background` is false or unset).
required:
- answer
properties:
answer:
type: string
description: The synthesized research answer.
example: RAG and fine-tuning serve different purposes...
citations:
type: array
items:
$ref: '#/components/schemas/ResearchCitation'
description: Sources cited in the answer.
ResearchTaskStatus:
type: object
required:
- task_id
- status
properties:
task_id:
type: string
description: The research task identifier.
status:
type: string
enum:
- pending
- running
- completed
- failed
description: Current status of the research task.
answer:
type: string
description: The synthesized research answer (present when status is `completed`).
citations:
type: array
items:
$ref: '#/components/schemas/ResearchCitation'
description: Sources cited in the answer (present when status is `completed`).
error:
type:
- string
- 'null'
description: Always present in poll responses; `null` unless the task failed.
ResembleProviderParams:
type: object
description: Resemble AI provider-specific parameters.
properties:
api_key:
type: string
description: Custom Resemble API key.
precision:
type: string
description: Synthesis precision.
sample_rate:
type: string
description: Audio sample rate.
format:
type: string
description: Audio output format.
ResembleSampleRate:
type: string
title: Resemble Sample Rate
description: Audio sample rate in Hz.
enum:
- '8000'
- '16000'
- '22050'
- '32000'
- '44100'
- '48000'
default: '48000'
ResembleVoiceSettings:
type: object
title: Resemble Voice Settings
properties:
type:
type: string
enum:
- resemble
description: Voice settings provider type
precision:
description: Audio precision format.
type: string
enum:
- PCM_16
- PCM_24
- PCM_32
- MULAW
default: PCM_32
sample_rate:
$ref: '#/components/schemas/ResembleSampleRate'
format:
description: Output audio format.
type: string
enum:
- wav
- mp3
default: mp3
required:
- type
ResendMagicLinkRequest:
type: object
properties:
email:
type: string
format: email
description: Email address of the bot signup account to resend the magic link to.
example: agent-owner@example.com
required:
- email
ReservedPhoneNumber:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
errors:
type: string
description: Errors the reservation could happen upon
example: Number is already on hold
readOnly: true
record_type:
type: string
example: reserved_phone_number
readOnly: true
phone_number:
type: string
example: '+19705555098'
status:
type: string
enum:
- pending
- success
- failure
description: The status of the phone number's reservation.
example: success
readOnly: true
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the individual number reservation was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the the individual number reservation was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
expired_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the individual number reservation is going to expire
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
example:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type: reserved_phone_number
phone_number: '+19705555098'
status: pending
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
expired_at: '2018-01-01T00:00:00.000000Z'
type: object
ResourceMetadata:
type: object
properties:
resource:
type: string
format: uri
description: Protected resource URL
authorization_servers:
type: array
items:
type: string
format: uri
description: List of authorization server URLs
ResourceNotFoundError:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
description: Error code identifying the error type.
detail:
type: string
description: A human-readable explanation of the error.
meta:
type: object
properties:
url:
type: string
format: uri
description: A URL to the detailed documentation for the error.
title:
type: string
description: A short, human-readable summary of the problem.
ResponseFormatJsonObject:
description: 'JSON mode: the model output is valid JSON, without a schema.'
properties:
type:
const: json_object
type: string
required:
- type
title: ResponseFormatJsonObject
type: object
ResponseFormatJsonSchema:
description: The JSON schema configuration, required when `type` is `json_schema`. Matches the [OpenAI structured outputs](https://platform.openai.com/docs/guides/structured-outputs)
`json_schema` response format.
properties:
name:
type: string
description: The name of the response format. Used for clarity only.
description:
type: string
description: A description of what the response format is for, typically used to guide the model.
schema:
type: object
additionalProperties: true
description: The JSON schema the model output must conform to. A valid [JSON Schema](https://json-schema.org) object,
e.g. a Pydantic `model_json_schema()` export.
strict:
type: boolean
description: Enables strict schema adherence when supported by the model. If the generated output does not match
the provided schema, the request fails instead of returning non-conformant output.
type: object
required:
- name
title: ResponseFormatJsonSchema
ResponseFormatJsonSchemaParam:
description: 'Structured output: the model output is constrained to the JSON schema supplied in `json_schema`.'
properties:
type:
const: json_schema
type: string
json_schema:
$ref: '#/components/schemas/ResponseFormatJsonSchema'
required:
- type
- json_schema
title: ResponseFormatJsonSchemaParam
type: object
ResponseFormatText:
description: Plain text output.
properties:
type:
const: text
type: string
required:
- type
title: ResponseFormatText
type: object
ResponseMeta:
type: object
required:
- event_count
- products
properties:
event_count:
type: integer
description: Total number of events in the session tree.
products:
type: array
items:
type: string
description: List of distinct products involved in the session.
ResumeConferenceRecordingRequest:
type: object
title: Pause Recording Request
properties:
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id:
description: Use this field to resume specific recording.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
region:
$ref: '#/components/schemas/ConferenceRegion'
ResumeRecordingRequest:
type: object
title: Resume Recording Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id:
description: Uniquely identifies the resource.
type: string
format: uuid
example: 6e00ab49-9487-4364-8ad6-23965965afb2
Retrieval:
properties:
type:
type: string
enum:
- retrieval
retrieval:
$ref: '#/components/schemas/BucketIds'
type: object
required:
- type
- retrieval
title: Retrieval
RetrievalSettings:
type: object
description: How documents are retrieved when searching the collection.
properties:
top_k:
type: integer
description: Number of top results to retrieve (1–50).
minimum: 1
maximum: 50
default: 5
example: 5
retrieval_type:
type: string
description: 'Retrieval strategy. `vector` runs semantic similarity search; `hybrid` combines vector similarity
with keyword matching; `keyword` runs lexical (BM25) matching. `keyword` is not accepted yet: setting it returns
422 `unsupported_retrieval_type`. A collection set to `hybrid` is accepted here but cannot be searched until hybrid
execution ships.'
enum:
- vector
- hybrid
default: vector
example: vector
RetrievalSettingsWrapper:
type: object
properties:
record_type:
type: string
description: Identifies the record type. Always `ai_collection_settings`.
example: ai_collection_settings
readOnly: true
retrieval:
$ref: '#/components/schemas/RetrievalSettings'
RetrievalTool:
properties:
type:
type: string
enum:
- retrieval
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
retrieval:
$ref: '#/components/schemas/BucketIds'
type: object
required:
- type
- retrieval
title: RetrievalTool
RetrieveVerificationResponse:
title: RetrieveVerificationResponse
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/Verification'
Revision:
type: object
properties:
record_type:
type: string
revision_id:
type: string
image:
type: string
commit_sha:
type: string
shipped_by:
type: string
shipped_at:
type: string
format: date-time
build_status:
type: string
deploy_status:
type: string
active:
type: boolean
failure_stage:
type: string
failure_reason:
type: string
build_ok_at:
type: string
format: date-time
RevisionListResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/functions-observability_PaginationMeta'
data:
type: array
items:
$ref: '#/components/schemas/Revision'
RolloutSlot:
properties:
version_id:
type: string
title: Version Id
weight:
type: number
title: Weight
minimum: 0.0
maximum: 100.0
type: object
required:
- version_id
- weight
title: RolloutSlot
description: One slot in a percentage rollout.
Room:
type: object
properties:
id:
description: A unique identifier for the room.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
max_participants:
description: Maximum participants allowed in the room.
type: integer
example: 50
unique_name:
description: The unique (within the Telnyx account scope) name of the room.
type: string
example: My room
created_at:
description: ISO 8601 timestamp when the room was created.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
updated_at:
description: ISO 8601 timestamp when the room was updated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
active_session_id:
description: The identifier of the active room session if any.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
sessions:
type: array
items:
$ref: '#/components/schemas/RoomSession'
enable_recording:
description: Enable or disable recording for that room.
type: boolean
example: true
default: false
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this room will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type: string
format: uri
description: The failover URL where webhooks related to this room will be sent if sending to the primary URL fails.
Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type: integer
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
record_type:
type: string
example: room
readOnly: true
example:
id: 7b61621f-62e0-4aad-ab11-9fd19e272e73
max_participants: 50
unique_name: My Room
created_at: '2021-04-16T09:46:20.954863Z'
updated_at: '2021-04-16T10:24:55.962200Z'
active_session_id: 7b61621f-62e0-4aad-ab11-9fd19e272e74
enable_recording: true
webhook_event_failover_url: https://failover.example.com
webhook_timeout_secs: 25
webhook_event_url: https://www.example.com
sessions:
- id: 7b61621f-62e0-4aad-ab11-9fd19e272e74
room_id: 7b61621f-62e0-4aad-ab11-9fd19e272e73
active: true
created_at: '2021-04-16T09:46:20.954863Z'
updated_at: '2021-04-16T10:24:55.962200Z'
participants: []
record_type: room_session
record_type: room
RoomComposition:
type: object
properties:
id:
description: A unique identifier for the room composition.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
room_id:
description: Identify the room associated with the room composition.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
session_id:
description: Identify the room session associated with the room composition.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
user_id:
description: Identify the user associated with the room composition.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
status:
description: Shows the room composition status.
type: string
example: completed
enum:
- completed
- enqueued
- processing
size_mb:
description: Shows the room composition size in MB.
type: number
format: float
example: 10.5
download_url:
description: Url to download the composition.
type: string
example: https://www.example.com
duration_secs:
description: Shows the room composition duration in seconds.
type: integer
example: 67
format:
description: Shows format of the room composition.
type: string
example: mp4
enum:
- mp4
created_at:
description: ISO 8601 timestamp when the room composition was created.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
updated_at:
description: ISO 8601 timestamp when the room composition was updated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
ended_at:
description: ISO 8601 timestamp when the room composition has ended.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
started_at:
description: ISO 8601 timestamp when the room composition has stated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
completed_at:
description: ISO 8601 timestamp when the room composition has completed.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
video_layout:
description: Describes the video layout of the room composition in terms of regions. Limited to 2 regions.
type: object
additionalProperties:
$ref: '#/components/schemas/VideoRegion'
webhook_event_url:
description: The URL where webhooks related to this room composition will be sent. Must include a scheme, such as
'https'.
type: string
format: uri
example: https://example.com
webhook_event_failover_url:
type: string
format: uri
description: The failover URL where webhooks related to this room composition will be sent if sending to the primary
URL fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type: integer
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
resolution:
type: string
description: The resolution of the room composition.
example: 1280x720
record_type:
type: string
example: room_composition
readOnly: true
example:
completed_at: '2022-02-25T05:39:56.377426Z'
download_url: https://example.com
duration_secs: 84
ended_at: '2022-02-24T23:22:24.577677Z'
format: mp4
id: 7103dc53-ee59-4b54-a58b-c77d99ceb037
record_type: composition
resolution: 1280x720
room_id: f981dbb3-228a-44e9-ac54-e87f0e2658b0
session_id: 8f728d7b-00e2-4c59-8c27-f564b828df87
size_mb: 6
started_at: '2022-02-24T23:21:00.077209Z'
status: enqueued
user_id: 12a04ec9-0f91-4a91-9f3a-a19d9931182e
video_layout:
first:
height: 720
video_sources:
- 7b61621f-62e0-4aad-ab11-9fd19e272e73
width: 1280
x_pos: 0
y_pos: 0
z_pos: 0
webhook_event_url: https://webhook.site/544663ce-b692-4f9c-80ed-e5ad97cd5c02
RoomParticipant:
type: object
properties:
id:
description: A unique identifier for the room participant.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
session_id:
description: Identify the room session that participant is part of.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
context:
description: Context provided to the given participant through the client SDK
type: string
example: Alice
joined_at:
description: ISO 8601 timestamp when the participant joined the session.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
updated_at:
description: ISO 8601 timestamp when the participant was updated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
left_at:
description: ISO 8601 timestamp when the participant left the session.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
record_type:
type: string
example: room_participant
readOnly: true
example:
id: 7b61621f-62e0-4aad-ab11-9fd19e272e73
session_id: 7b61621f-5fe4-4aad-ab11-9fd19e272e73
context: Alice
joined_at: '2021-04-16T09:46:20.954863Z'
updated_at: '2021-04-16T10:24:55.962200Z'
left_at: '2021-04-16T10:24:55.962200Z'
record_type: room_participant
RoomRecording:
type: object
properties:
id:
description: A unique identifier for the room recording.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
room_id:
description: Identify the room associated with the room recording.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
session_id:
description: Identify the room session associated with the room recording.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
participant_id:
description: Identify the room participant associated with the room recording.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
status:
description: Shows the room recording status.
type: string
example: completed
enum:
- completed
- processing
type:
description: Shows the room recording type.
type: string
example: audio
enum:
- audio
- video
size_mb:
description: Shows the room recording size in MB.
type: number
format: float
example: 10.5
download_url:
description: Url to download the recording.
type: string
example: https://www.example.com
codec:
description: Shows the codec used for the room recording.
type: string
example: opus
duration_secs:
description: Shows the room recording duration in seconds.
type: integer
example: 67
created_at:
description: ISO 8601 timestamp when the room recording was created.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
updated_at:
description: ISO 8601 timestamp when the room recording was updated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
ended_at:
description: ISO 8601 timestamp when the room recording has ended.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
started_at:
description: ISO 8601 timestamp when the room recording has stated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
completed_at:
description: ISO 8601 timestamp when the room recording has completed.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
record_type:
type: string
example: room_recording
readOnly: true
example:
id: 6b61621f-62e0-4aad-ab11-9fd19e272e73
room_id: 7b61621f-5fe4-4aad-ab11-9fd19e272e73
session_id: 8b61621f-5fe4-4aad-ab11-9fd19e272e73
participant_id: 9b61621f-5fe4-4aad-ab11-9fd19e272e73
status: completed
download_url: https://www.example.com
type: audio
duration_secs: 3660
size_mb: 5.6
codec: opus
created_at: '2021-04-16T09:46:20.954863Z'
updated_at: '2021-04-16T10:24:55.962200Z'
started_at: '2021-04-16T09:24:55.962200Z'
ended_at: '2021-04-16T10:24:55.962200Z'
completed_at: '2021-04-16T10:25:55.962200Z'
record_type: room_session
RoomSession:
type: object
properties:
id:
description: A unique identifier for the room session.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
room_id:
description: Identify the room hosting that room session.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
active:
description: Shows if the room session is active or not.
type: boolean
example: false
created_at:
description: ISO 8601 timestamp when the room session was created.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
updated_at:
description: ISO 8601 timestamp when the room session was updated.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
ended_at:
description: ISO 8601 timestamp when the room session has ended.
type: string
format: date-time
example: '2021-03-26T17:51:59.588408Z'
participants:
type: array
items:
$ref: '#/components/schemas/RoomParticipant'
record_type:
type: string
example: room_session
readOnly: true
example:
id: 7b61621f-62e0-4aad-ab11-9fd19e272e73
room_id: 7b61621f-5fe4-4aad-ab11-9fd19e272e73
active: false
created_at: '2021-04-16T09:46:20.954863Z'
updated_at: '2021-04-16T10:24:55.962200Z'
ended_at: '2021-04-16T10:24:55.962200Z'
participants: []
record_type: room_session
Rule-Input:
properties:
match:
items:
$ref: '#/components/schemas/Clause'
type: array
title: Match
serve:
$ref: '#/components/schemas/Serve'
type: object
required:
- serve
title: Rule
description: 'A targeting rule: ``match`` clauses (AND) gate ``serve``.
An empty ``match`` is a catch-all (always fires).'
Rule-Output:
properties:
match:
items:
$ref: '#/components/schemas/Clause'
type: array
title: Match
serve:
$ref: '#/components/schemas/Serve'
type: object
required:
- serve
title: Rule
description: 'A targeting rule: ``match`` clauses (AND) gate ``serve``.
An empty ``match`` is a catch-all (always fires).'
RunScenariosRequest:
type: object
properties:
agent_id:
type: integer
assistant_id:
type: string
scenarios:
type:
- array
- string
items: {}
description: Scenario IDs to run, or the literal string 'all'.
tags:
type: array
items:
type: string
frequency:
type: integer
name:
type: string
outbound_phone_number:
type: string
personality_ids:
type: array
items:
type: integer
test_profile_ids:
type: array
items:
type: integer
mode:
type: string
enum:
- same_number
- different_numbers
agent_number:
type: string
concurrency_limit:
type: integer
description: Maximum number of concurrent simulated calls.
example:
agent_id: 1259
scenarios:
- 9512
tags:
- regression
mode: same_number
concurrency_limit: 3
RunScenariosResponse:
type: object
properties:
status:
type: string
description: Initial status of the run batch.
id:
type: integer
description: ID of the created test-run batch whose results can be polled.
required:
- id
- status
example:
status: in_queue
id: 10119
RunStatus:
type: string
enum:
- pending
- running
- paused
- succeeded
- failed
- cancelled
title: RunStatus
S3ConfigurationData:
type: object
title: AWS S3 Storage Configuration Data
properties:
backend:
type: string
enum:
- s3
description: Storage backend type
bucket:
$ref: '#/components/schemas/Bucket'
region:
$ref: '#/components/schemas/Region'
aws_access_key_id:
$ref: '#/components/schemas/AwsAccessKeyId'
aws_secret_access_key:
$ref: '#/components/schemas/AwsSecretAccessKey'
required:
- backend
- bucket
- region
- aws_access_key_id
- aws_secret_access_key
S3GenericConfigurationData:
type: object
title: S3-Compatible (Generic) Storage Configuration Data
properties:
backend:
type: string
enum:
- s3-generic
description: Storage backend type
bucket:
$ref: '#/components/schemas/Bucket'
region:
$ref: '#/components/schemas/Region'
endpoint:
$ref: '#/components/schemas/Endpoint'
aws_access_key_id:
$ref: '#/components/schemas/AwsAccessKeyId'
aws_secret_access_key:
$ref: '#/components/schemas/AwsSecretAccessKey'
required:
- backend
- bucket
- region
- endpoint
- aws_access_key_id
- aws_secret_access_key
SIMCard:
type: object
title: SIMCard
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
example: sim_card
readOnly: true
status:
$ref: '#/components/schemas/SIMCardStatus'
type:
type: string
description: The type of SIM card
readOnly: true
example: physical
enum:
- physical
- esim
iccid:
type: string
description: 'The ICCID is the identifier of the specific SIM card/chip. Each SIM is internationally identified
by its integrated circuit card identifier (ICCID). ICCIDs are stored in the SIM card''s memory and are also engraved
or printed on the SIM card body during a process called personalization.
'
readOnly: true
example: '89310410106543789301'
imsi:
type: string
description: 'SIM cards are identified on their individual network operators by a unique International Mobile Subscriber
Identity (IMSI).
Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs.
The IMSI is stored in the Subscriber Identity Module (SIM) inside the device and is sent by the device to the
appropriate network. It is used to acquire the details of the device in the Home Location Register (HLR) or the
Visitor Location Register (VLR).
'
readOnly: true
example: 081932214823362973
msisdn:
type: string
description: 'Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile
phone number internationally.
MSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which
identifies the subscriber''s operator.
'
readOnly: true
example: '+13109976224'
sim_card_group_id:
type: string
format: uuid
description: The group SIMCardGroup identification. This attribute can be null when it's present in
an associated resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
tags:
type: array
description: Searchable tags associated with the SIM card
items:
type: string
example:
- personal
- customers
- active-customers
authorized_imeis:
type:
- array
- 'null'
description: List of IMEIs authorized to use a given SIM card.
items:
type: string
example:
- '106516771852751'
- '534051870479563'
- '508821468377961'
current_imei:
type: string
description: IMEI of the device where a given SIM card is currently being used.
readOnly: true
example: '457032284023794'
data_limit:
type: object
description: The SIM card individual data limit configuration.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
enum:
- MB
- GB
current_billing_period_consumed_data:
type: object
description: The SIM card consumption so far in the current billing cycle.
readOnly: true
properties:
amount:
type: string
example: '2049.0'
unit:
type: string
example: MB
default: MB
actions_in_progress:
type: boolean
description: Indicate whether the SIM card has any pending (in-progress) actions.
readOnly: true
example: true
default: false
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
ipv4:
type: string
description: 'The SIM''s address in the currently connected network. This IPv4 address is usually obtained dynamically,
so it may vary according to the location or new connections.
'
readOnly: true
example: 192.168.0.0
ipv6:
type: string
description: 'The SIM''s address in the currently connected network. This IPv6 address is usually obtained dynamically,
so it may vary according to the location or new connections.
'
readOnly: true
example: 2001:cdba:0000:0000:0000:0000:3257:9652
current_device_location:
type: object
description: Current physical location data of a given SIM card. Accuracy is given in meters.
readOnly: true
properties:
latitude:
type: string
example: '41.143'
longitude:
type: string
example: '-8.605'
accuracy:
type: integer
example: 1250
accuracy_unit:
type: string
example: m
default: m
current_mnc:
type: string
readOnly: true
description: "Mobile Network Code of the current network to which the SIM card is connected. It's a two to three\
\ decimal digits that identify a network. \n This code is commonly seen joined with a Mobile Country\
\ Code (MCC) in a tuple that allows identifying a carrier known as PLMN (Public Land Mobile Network) code."
example: '260'
current_mcc:
type: string
readOnly: true
description: 'Mobile Country Code of the current network to which the SIM card is connected. It''s a three decimal
digit that identifies a country.
This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier
known as PLMN (Public Land Mobile Network) code.'
example: '410'
live_data_session:
type: string
enum:
- connected
- disconnected
- unknown
readOnly: true
description: Indicates whether the device is actively connected to a network and able to run data.
example: connected
pin_puk_codes:
type: object
description: PIN and PUK codes for the SIM card. Only available when include_pin_puk_codes=true is set in the request.
readOnly: true
properties:
pin1:
type: string
description: The primary Personal Identification Number (PIN) for the SIM card. This is a 4-digit code used
to protect the SIM card from unauthorized use.
example: '1234'
readOnly: true
pin2:
type: string
description: The secondary Personal Identification Number (PIN2) for the SIM card. This is a 4-digit code used
for additional security features.
example: '5678'
readOnly: true
puk1:
type: string
description: The primary Personal Unblocking Key (PUK1) for the SIM card. This is an 8-digit code used to unlock
the SIM card if PIN1 is entered incorrectly multiple times.
example: '12345678'
readOnly: true
puk2:
type: string
description: The secondary Personal Unblocking Key (PUK2) for the SIM card. This is an 8-digit code used to
unlock the SIM card if PIN2 is entered incorrectly multiple times.
example: '87654321'
readOnly: true
esim_installation_status:
type:
- string
- 'null'
description: The installation status of the eSIM. Only applicable for eSIM cards.
readOnly: true
example: released
enum:
- released
- disabled
version:
type: string
description: The version of the SIM card.
readOnly: true
example: '4.3'
resources_with_in_progress_actions:
type: array
description: List of resources with actions in progress.
readOnly: true
items:
type: object
example: []
eid:
type:
- string
- 'null'
description: The Embedded Identity Document (eID) for eSIM cards.
readOnly: true
example: null
voice_enabled:
type: boolean
description: Indicates whether voice services are enabled for the SIM card.
readOnly: true
example: false
default: false
SIMCardAction:
type: object
title: SIMCardAction
description: This object represents a SIM card action. It allows tracking the current status of an operation that impacts
the SIM card.
properties:
id:
$ref: '#/components/schemas/wireless_Id'
record_type:
type: string
example: sim_card_action
readOnly: true
sim_card_id:
type: string
format: uuid
description: The related SIM card identifier.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
action_type:
type: string
description: "The operation type. It can be one of the following: \n\n enable - move the\
\ SIM card to the enabled status \n enable_standby_sim_card - move a SIM card\
\ previously on the standby status to the enabled status after it consumes data. \n\
\ disable - move the SIM card to the disabled status \n set_standby\
\ - move the SIM card to the standby status \n "
enum:
- enable
- enable_standby_sim_card
- disable
- set_standby
readOnly: true
example: enable
status:
type: object
properties:
value:
type: string
description: The current status of the SIM card action.
enum:
- in-progress
- completed
- failed
- interrupted
readOnly: true
example: completed
reason:
type: string
description: It describes why the SIM card action is in the current status. This will be null for
self-explanatory statuses, such as in-progress and completed but will include further
information on statuses like interrupted and failed.
readOnly: true
example: The data limit was exceeded.
settings:
type:
- object
- 'null'
description: A JSON object representation of the action params.
example: {}
readOnly: true
additionalProperties: true
created_at:
$ref: '#/components/schemas/wireless_CreatedAt'
updated_at:
$ref: '#/components/schemas/wireless_UpdatedAt'
SIMCardActionsSummary:
type: object
properties:
status:
type: string
enum:
- in-progress
- completed
- failed
- interrupted
example: in-progress
count:
type: integer
SIMCardActivationCode:
type: object
title: SIMCardActivationCode
properties:
record_type:
type: string
example: sim_card_activation_code
readOnly: true
activation_code:
type: string
description: Contents of the eSIM activation QR code.
example: LPA:1$....
readOnly: true
SIMCardDeviceDetails:
type: object
title: SIMCardDeviceDetails
properties:
record_type:
type: string
example: device_details
readOnly: true
imei:
type: string
description: IMEI of the device where the SIM card is being used in.
example: '457032284023794'
readOnly: true
model_name:
type: string
description: Brand of the device where the SIM card is being used in.
example: iPad Pro 11 2020 Cellular
readOnly: true
brand_name:
type: string
description: Brand of the device where the SIM card is being used in.
example: Apple
readOnly: true
device_type:
type: string
description: Type of the device where the SIM card is being used in.
example: Tablet
readOnly: true
operating_system:
type: string
description: Operating system of the device where the SIM card is being used in.
example: iOS 12
readOnly: true
SIMCardGroup:
title: SIMCardGroup
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: sim_card_group
default:
description: Indicates whether the SIM card group is the users default group. The default group is created for
the user and can not be removed.
type: boolean
example: true
readOnly: true
name:
description: A user friendly name for the SIM card group.
type: string
example: My Test Group
data_limit:
type: object
description: Upper limit on the amount of data the SIM cards, within the group, can use.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
consumed_data:
$ref: '#/components/schemas/ConsumedData'
private_wireless_gateway_id:
description: The identification of the related Private Wireless Gateway resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
default: null
wireless_blocklist_id:
description: The identification of the related Wireless Blocklist resource.
format: uuid
type: string
example: a13bc415-7966-43bf-90d4-63cc76275289
default: null
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
SIMCardGroupAction:
type: object
title: SIMCardGroupAction
description: This object represents a SIM card group action request. It allows tracking the current status of an operation
that impacts the SIM card group and SIM card in it.
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
example: sim_card_group_action
readOnly: true
sim_card_group_id:
type: string
format: uuid
description: The SIM card group identification.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
type:
type: string
description: Represents the type of the operation requested.
enum:
- set_private_wireless_gateway
- remove_private_wireless_gateway
- set_wireless_blocklist
- remove_wireless_blocklist
example: set_private_wireless_gateway
status:
type: string
enum:
- in-progress
- completed
- failed
example: in-progress
settings:
type: object
description: A JSON object representation of the action params.
properties:
private_wireless_gateway_id:
description: The identification of the related Private Wireless Gateway resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
wireless_blocklist_id:
description: The identification of the related Wireless Blocklist resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
SIMCardGroupCreate:
title: SIMCardGroupCreate
type: object
properties:
name:
description: A user friendly name for the SIM card group.
type: string
example: My Test Group
data_limit:
type: object
description: Upper limit on the amount of data the SIM cards, within the group, can use.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
required:
- name
SIMCardGroupPatch:
title: SIMCardGroupPatch
type: object
properties:
name:
description: A user friendly name for the SIM card group.
type: string
example: My Test Group
data_limit:
type: object
description: Upper limit on the amount of data the SIM cards, within the group, can use.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
SIMCardOrder:
title: SIMCardOrder
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: sim_card_order
quantity:
type: integer
minimum: 1
description: The amount of SIM cards requested in the SIM card order.
example: 21
cost:
type: object
description: An object representing the total cost of the order.
properties:
amount:
type: string
description: A string representing the cost amount.
example: '2.32'
currency:
type: string
description: Filter by ISO 4217 currency string.
example: USD
example:
amount: '2.52'
currency: USD
order_address:
type: object
properties:
id:
type: string
description: Uniquely identifies the address for the order.
example: '1293384261075731499'
first_name:
type: string
description: The first name of the shipping recipient.
example: John
last_name:
type: string
description: The last name of the shipping recipient.
example: Smith
business_name:
type: string
description: The name of the business where the address is located.
example: Telnyx LLC
street_address:
type: string
description: The name of the street where the address is located.
example: 600 Congress Avenue
extended_address:
type: string
description: Supplemental field for address information.
example: 14th Floor
locality:
type: string
description: The name of the city where the address is located.
example: Austin
administrative_area:
type: string
description: State or province where the address is located.
example: TX
country_code:
type: string
description: The mobile operator two-character (ISO 3166-1 alpha-2) origin country code.
example: US
postal_code:
type: string
description: Postal code for the address.
example: '78701'
description: An object representing the address information from when the order was submitted.
readOnly: true
example:
id: '1293384261075731499'
street_address: 600 Congress Avenue
extended_address: 14th Floor
locality: Austin
administrative_area: TX
country_code: US
postal_code: '78701'
tracking_url:
type: string
format: uri
description: The URL used to get tracking information about the order.
example: http://www.example.com/
status:
type: string
description: The current status of the SIM Card order. pending - the order is waiting to be
processed. processing - the order is currently being processed. ready_to_ship
- the order is ready to be shipped to the specified address . shipped - the order
was shipped and is on its way to be delivered to the specified address . delivered
- the order was delivered to the specified address . canceled - the order was canceled.
enum:
- pending
- processing
- ready_to_ship
- shipped
- delivered
- canceled
example: pending
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was last created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was last updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
SIMCardOrderPreview:
title: SIMCardOrderPreview
type: object
properties:
total_cost:
type: object
properties:
amount:
type: string
description: A string representing the cost amount.
example: '2.32'
currency:
type: string
description: ISO 4217 currency string.
example: USD
shipping_cost:
type: object
properties:
amount:
type: string
description: A string representing the cost amount.
example: '2.32'
currency:
type: string
description: ISO 4217 currency string.
example: USD
sim_cards_cost:
type: object
properties:
amount:
type: string
description: A string representing the cost amount.
example: '2.32'
currency:
type: string
description: ISO 4217 currency string.
example: USD
record_type:
type: string
description: Identifies the type of the resource.
example: sim_card_order_preview
readOnly: true
quantity:
type: integer
description: The amount of SIM cards requested in the SIM card order.
example: 21
SIMCardPublicIP:
type: object
title: SIMCardPublicIP
properties:
record_type:
type: string
example: sim_card_public_ip
readOnly: true
region_code:
type: string
example: dc2
readOnly: true
sim_card_id:
type: string
format: uuid
example: 6b14e151-8493-4fa1-8664-1cc4e6d14158
type:
type: string
enum:
- ipv4
default: ipv4
example: ipv4
readOnly: true
ip:
type: string
description: The provisioned IP address. This attribute will only be available when underlying resource status is
in a "provisioned" status.
example: 192.168.0.0
readOnly: true
default: null
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
SIMCardRegistration:
title: SIMCardRegistration
type: object
properties:
sim_card_group_id:
type: string
format: uuid
description: The group SIMCardGroup identification. This attribute can be null when it's present in
an associated resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
tags:
type: array
description: Searchable tags associated with the SIM card
items:
type: string
example:
- personal
- customers
- active-customers
registration_codes:
type: array
items:
type: string
example:
- '0000000001'
- '0000000002'
- '0000000003'
status:
type: string
description: Status on which the SIM card will be set after being successful registered.
enum:
- enabled
- disabled
- standby
example: standby
default: enabled
required:
- registration_codes
SIMCardRegistrationCodeValidation:
type: object
properties:
record_type:
type: string
example: sim_card_registration_code_validation
registration_code:
type: string
description: The 10-digit SIM card registration code
example: 0123456789
valid:
type: boolean
description: The attribute that denotes whether the code is valid or not
example: false
invalid_detail:
type:
- string
- 'null'
description: The validation message
example: This code has already been used.
SIMCardRegistrationCodeValidations:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SIMCardRegistrationCodeValidation'
SIMCardStatus:
type: object
properties:
value:
type: string
enum:
- registering
- enabling
- enabled
- disabling
- disabled
- data_limit_exceeded
- setting_standby
- standby
description: "The current status of the SIM card. It will be one of the following: \n\n registering\
\ - the card is being registered \n enabling - the card is being enabled \n enabled\
\ - the card is enabled and ready for use \n disabling - the card is being disabled \n\
\ disabled - the card has been disabled and cannot be used \n data_limit_exceeded\
\ - the card has exceeded its data consumption limit \n setting_standby - the process to\
\ set the card in stand by is in progress \n standby - the card is in stand by \n \n\
Transitioning between the enabled and disabled states may take a period of time.\n"
readOnly: true
example: enabled
reason:
type: string
description: It describes why the SIM card is in the current status.
readOnly: true
example: The SIM card is active, ready to connect to networks and consume data.
SIPReferTool:
properties:
type:
type: string
enum:
- refer
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
refer:
$ref: '#/components/schemas/SIPReferToolParams'
type: object
required:
- type
- refer
title: SIPReferTool
SIPReferToolParams:
properties:
targets:
type: array
description: The different possible targets of the SIP refer. The assistant will be able to choose one of the targets
to refer the call to.
items:
type: object
properties:
name:
type: string
description: The name of the target.
example: Support
sip_address:
type: string
description: The SIP URI to which the call will be referred.
example: sip:username@sip.non-telnyx-address.com
sip_auth_username:
type: string
description: SIP Authentication username used for SIP challenges.
sip_auth_password:
type: string
description: SIP Authentication password used for SIP challenges.
required:
- name
- sip_address
sip_headers:
description: SIP headers to be added to the SIP REFER. Currently only User-to-User and Diversion headers are supported.
type: array
items:
type: object
properties:
name:
type: string
enum:
- User-to-User
- Diversion
value:
description: The value of the header. Note that we support mustache templating for the value. For example
you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration
secret.
type: string
custom_headers:
description: Custom headers to be added to the SIP REFER.
type: array
items:
type: object
properties:
name:
type: string
value:
description: The value of the header. Note that we support mustache templating for the value. For example
you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration
secret.
type: string
type: object
required:
- targets
title: SIPReferToolParams
SMSFallback:
type: object
properties:
from:
type: string
description: Phone number in +E.164 format
example: '+13125551234'
text:
type: string
description: Text (maximum 3072 characters)
example: Hello world!
SSLCertificate:
type: object
properties:
id:
type: string
description: Unique identifier for the SSL certificate
issued_to:
type: object
properties:
common_name:
type: string
description: The common name of the entity the certificate was issued to
organization:
type: string
description: The organization the certificate was issued to
organization_unit:
type: string
description: The organizational unit the certificate was issued to
issued_by:
type: object
properties:
common_name:
type: string
description: The common name of the entity the certificate was issued by
organization:
type: string
description: The organization the certificate was issued by
organization_unit:
type: string
description: The organizational unit the certificate was issued by
valid_from:
type: string
format: date-time
description: The time the certificate is valid from
example: '2020-01-01T00:00:00Z'
valid_to:
type: string
format: date-time
description: The time the certificate is valid to
example: '2020-01-01T00:00:00Z'
created_at:
type: string
format: date-time
description: Time when SSL certificate was uploaded
example: '2020-01-01T00:00:00Z'
STTProvider:
type: object
description: A (provider, model) tuple along with the service surfaces it supports. Each entry in `service_types` describes
one surface and the languages accepted on it.
properties:
provider:
type: string
description: STT provider name.
example: deepgram
model:
type: string
description: Provider-scoped model name.
example: deepgram/nova-3
hosted:
type: boolean
description: Whether this model runs on Telnyx-hosted infrastructure (`true`) or is provided by a third-party vendor
(`false`).
service_types:
type: array
description: Service surfaces this (provider, model) supports. When the request filters by `service_type`, only
the matching nested entry is returned for each matching model.
items:
$ref: '#/components/schemas/STTProviderServiceType'
required:
- provider
- model
- hosted
- service_types
STTProviderServiceType:
type: object
description: A supported service surface for a given (provider, model), along with the language codes accepted on that
surface. Language support can differ per surface — for example, a model may accept a narrower language set for streaming
than for file transcription.
properties:
type:
$ref: '#/components/schemas/STTServiceType'
languages:
type: array
description: Languages accepted on this service surface, in the provider's native code format. `auto` indicates
the provider performs language detection.
items:
type: string
example:
- en
- es
- fr
required:
- type
- languages
STTProvidersMeta:
type: object
properties:
total:
type: integer
description: Total number of entries returned.
example: 12
required:
- total
STTProvidersResponse:
type: object
description: List of supported STT providers and models.
properties:
data:
type: array
items:
$ref: '#/components/schemas/STTProvider'
meta:
$ref: '#/components/schemas/STTProvidersMeta'
required:
- data
- meta
STTServiceType:
type: string
description: Service surface a model is available on. `ai_assistant` is the STT surface configured via Call Control
voice-assistant transcription; it covers both live-streaming and non-streaming/batch models (matching the `TranscriptionConfig.model`
enum on `call-control` voice assistants).
enum:
- streaming
- file_based
- in_call
- ai_assistant
ScenarioGenerationProgress:
type: object
properties:
total_scenarios:
type: integer
completed_scenarios:
type: integer
failed_scenarios:
type: integer
scenarios_list:
type: array
items:
type: object
additionalProperties: true
example:
total_scenarios: 5
completed_scenarios: 5
failed_scenarios: 0
scenarios_list: []
ScenarioGenerationResponse:
type: object
properties:
progress_id:
type: string
description: Identifier to poll generation progress with.
required:
- progress_id
example:
progress_id: b7e4c1a2-3d4f-5a6b-8c9d-0e1f2a3b4c5d
ScheduledCallSettings:
properties:
sip_region:
$ref: '#/components/schemas/SipRegion'
type: object
title: ScheduledCallSettings
description: 'Per-call telephony overrides applied when a scheduled phone-call event
dispatches. Phone-call events only. New per-call dispatch options should be
added here rather than as top-level event fields.'
ScheduledEventResponse:
anyOf:
- $ref: '#/components/schemas/ScheduledPhoneCallEventResponse'
- $ref: '#/components/schemas/ScheduledSmsEventResponse'
title: ScheduledEventResponse
description: Union type for different scheduled event response types
ScheduledPhoneCallEventResponse:
properties:
telnyx_conversation_channel:
$ref: '#/components/schemas/ConversationChannelType'
telnyx_end_user_target:
type: string
title: Telnyx End User Target
telnyx_agent_target:
type: string
title: Telnyx Agent Target
scheduled_at_fixed_datetime:
type: string
format: date-time
title: Scheduled At Fixed Datetime
assistant_id:
type: string
title: Assistant Id
retry_count:
type: integer
title: Retry Count
default: 0
retry_attempts:
type: integer
title: Retry Attempts
scheduled_event_id:
type: string
title: Scheduled Event Id
conversation_id:
type: string
title: Conversation Id
created_at:
type: string
format: date-time
title: Created At
status:
allOf:
- $ref: '#/components/schemas/EventStatus'
default: pending
conversation_metadata:
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
type: object
title: Conversation Metadata
dynamic_variables:
additionalProperties:
type: string
type: object
description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions
and messages using {{variable_name}} syntax.
title: Dynamic Variables
errors:
items:
type: string
type: array
title: Errors
call_status:
title: Call Status
type: string
description: 'Values: busy, canceled, no-answer, ringing, completed, failed, in-progress'
call_duration:
title: Call Duration
type: integer
description: Duration of the call in seconds
max_retries_client_errors:
type: integer
title: Max Retries Client Errors
description: 'Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before
the callee answered)'
default: 0
retry_interval_secs:
title: Retry Interval Secs
type: integer
call_attempts:
title: Call Attempts
items:
$ref: '#/components/schemas/AssistantScheduledCallAttempt'
type: array
dispatched_at:
title: Dispatched At
type: string
format: date-time
description: Date time at which call was sent
call_settings:
$ref: '#/components/schemas/ScheduledCallSettings'
type: object
required:
- telnyx_conversation_channel
- telnyx_end_user_target
- telnyx_agent_target
- scheduled_at_fixed_datetime
- assistant_id
title: ScheduledPhoneCallEventResponse
ScheduledSmsEventResponse:
properties:
telnyx_conversation_channel:
$ref: '#/components/schemas/ConversationChannelType'
telnyx_end_user_target:
type: string
title: Telnyx End User Target
telnyx_agent_target:
type: string
title: Telnyx Agent Target
scheduled_at_fixed_datetime:
type: string
format: date-time
title: Scheduled At Fixed Datetime
assistant_id:
type: string
title: Assistant Id
retry_count:
type: integer
title: Retry Count
default: 0
text:
type: string
title: Text
scheduled_event_id:
type: string
title: Scheduled Event Id
conversation_id:
type: string
title: Conversation Id
created_at:
type: string
format: date-time
title: Created At
status:
allOf:
- $ref: '#/components/schemas/EventStatus'
default: pending
conversation_metadata:
additionalProperties:
anyOf:
- type: string
- type: integer
- type: boolean
type: object
title: Conversation Metadata
dynamic_variables:
additionalProperties:
type: string
type: object
description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions
and messages using {{variable_name}} syntax.
title: Dynamic Variables
errors:
items:
type: string
type: array
title: Errors
type: object
required:
- telnyx_conversation_channel
- telnyx_end_user_target
- telnyx_agent_target
- scheduled_at_fixed_datetime
- assistant_id
- text
title: ScheduledSmsEventResponse
ScheduledTestJob:
type: object
properties:
id:
type: integer
name:
type: string
agent:
type: integer
description: ID of the test agent the job belongs to.
crontab_expression:
type: string
description: Cron expression controlling when the job runs, in the job's timezone.
timezone:
type: string
scenario_ids:
type: array
items:
type: integer
description: Scenario IDs the job executes.
scenarios_data:
type: array
items:
type: object
properties:
id:
type: integer
agent:
type: integer
name:
type: string
personality:
type:
- integer
- 'null'
personality_name:
type: string
personality:
type:
- integer
- 'null'
personalities:
type: array
items:
type: integer
tags:
type: array
items:
type: string
frequency:
type: integer
run_as_text:
type: boolean
description: Whether the job runs scenarios as text chat rather than voice calls.
execution_mode:
type: string
description: Execution mode for the test runs, such as voice, text, or sip.
notify_on:
type: string
enum:
- never
- success
- failure
- both
description: When the job sends a notification.
is_active:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- id
- name
- agent
- crontab_expression
- is_active
- created_at
- updated_at
example:
id: 1188
name: Nightly regression
agent: 1259
crontab_expression: 0 3 * * *
timezone: America/Chicago
scenario_ids:
- 9512
scenarios_data:
- id: 9512
agent: 1259
name: Refund escalation flow
personality: 4643
personality_name: Interruptive (High)
personality: null
personalities:
- 4643
tags:
- regression
frequency: 1
run_as_text: false
execution_mode: voice
notify_on: failure
is_active: true
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:04:05.123456Z'
ScheduledTestJobListResponse:
type: array
items:
$ref: '#/components/schemas/ScheduledTestJob'
example:
- id: 1188
name: Nightly regression
agent: 1259
crontab_expression: 0 3 * * *
timezone: America/Chicago
scenario_ids:
- 9512
scenarios_data:
- id: 9512
agent: 1259
name: Refund escalation flow
personality: 4643
personality_name: Interruptive (High)
personality: null
personalities:
- 4643
tags:
- regression
frequency: 1
run_as_text: false
execution_mode: voice
notify_on: failure
is_active: true
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:04:05.123456Z'
Scope:
type: string
enum:
- account
- domain
- address
description: Derived server-side from `domain_id`/`from`; never trusted from the caller.
ScreenshotAction:
type: object
description: Capture a screenshot of the current page.
required:
- type
properties:
type:
const: screenshot
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
ScrollAction:
type: object
description: Scroll the page.
required:
- type
properties:
type:
const: scroll
delta_x:
type: integer
minimum: -5000
maximum: 5000
default: 0
delta_y:
type: integer
minimum: -5000
maximum: 5000
default: 0
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
SearchedSIMCardGroup:
title: SIMCardGroup
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: sim_card_group
default:
description: Indicates whether the SIM card group is the users default group. The default group is created for
the user and can not be removed.
type: boolean
example: true
readOnly: true
name:
description: A user friendly name for the SIM card group.
type: string
example: My Test Group
data_limit:
type: object
description: Upper limit on the amount of data the SIM cards, within the group, can use.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
consumed_data:
$ref: '#/components/schemas/ConsumedData'
sim_card_count:
description: The number of SIM cards associated with the group.
type: integer
example: 10
default: 0
private_wireless_gateway_id:
description: The identification of the related Private Wireless Gateway resource.
format: uuid
type: string
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
default: null
wireless_blocklist_id:
description: The identification of the related Wireless Blocklist resource.
format: uuid
type: string
example: 5aa584f6-14b1-41b2-8e01-1c04d1ee77c1
default: null
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
SelectAction:
type: object
description: Select an option on the element identified by observation_id + ref.
required:
- type
- observation_id
- ref
- value
properties:
type:
const: select
observation_id:
type: string
minLength: 1
ref:
type: string
minLength: 1
value:
type: string
maxLength: 1024
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
SendChatMeetingSessionRequest:
title: SendChatMeetingSessionRequest
type: object
additionalProperties: false
required:
- text
properties:
text:
type: string
minLength: 1
maxLength: 4000
description: Chat message text to send in the meeting.
SendDTMFRequest:
type: object
title: Send DTMF Request
required:
- digits
properties:
digits:
description: 'DTMF digits to send. Valid digits are 0-9, A-D, *, and #. Pauses can be added using w (0.5s) and W
(1s).'
type: string
example: 1www2WABCDw9
duration_millis:
description: Specifies for how many milliseconds each digit will be played in the audio stream. Ranges from 100
to 500ms
type: integer
format: int32
example: 500
default: 250
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
digits: 1www2WABCDw9
duration_millis: 500
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
SendFaxMultipartRequest:
type: object
title: Send fax multipart request
required:
- connection_id
- contents
- from
- to
properties:
connection_id:
$ref: '#/components/schemas/ConnectionId'
contents:
description: 'The file you want to upload. The maximum allowed size is 20 MB. Supported formats: PDF, TIFF, JPEG,
PNG, DOC, DOCX, RTF, and TXT. contents and media_name/media_url can''t be submitted together.'
type: string
format: binary
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
quality:
$ref: '#/components/schemas/Quality'
t38_enabled:
$ref: '#/components/schemas/T38Enabled'
monochrome:
$ref: '#/components/schemas/Monochrome'
store_media:
$ref: '#/components/schemas/StoreMedia'
store_preview:
$ref: '#/components/schemas/StorePreview'
SendFaxRequest:
type: object
title: Send fax request
required:
- connection_id
- from
- to
properties:
connection_id:
description: The connection ID to send the fax with.
type: string
example: '234423'
media_url:
$ref: '#/components/schemas/MediaUrl'
media_name:
$ref: '#/components/schemas/MediaName'
to:
$ref: '#/components/schemas/To'
from:
$ref: '#/components/schemas/From'
from_display_name:
description: The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to
the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers,
spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from`
field.
type: string
example: Company Name
quality:
$ref: '#/components/schemas/Quality'
t38_enabled:
description: The flag to disable the T.38 protocol.
type: boolean
default: true
monochrome:
description: The flag to enable monochrome, true black and white fax results.
type: boolean
default: false
black_threshold:
description: The black threshold percentage for monochrome faxes. Only applicable if `monochrome` is set to `true`.
type: integer
minimum: 1
maximum: 100
default: 95
store_media:
description: Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted
together.
type: boolean
default: false
store_preview:
description: Should fax preview be stored on temporary URL.
type: boolean
default: false
preview_format:
description: The format for the preview file in case the `store_preview` is `true`.
type: string
enum:
- pdf
- tiff
default: tiff
webhook_url:
description: Use this field to override the URL to which Telnyx will send subsequent webhooks for this fax.
type: string
example: https://www.example.com/server-b/
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
SendMessageTool:
description: The send_message tool allows the assistant to send SMS or MMS messages to the end user. The 'to' and 'from'
addresses are automatically determined from the conversation context, and the message text is generated by the assistant
unless a message_template is provided for runtime variable substitution.
properties:
type:
type: string
enum:
- send_message
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
send_message:
type: object
properties:
message_template:
type:
- string
- 'null'
description: Optional message template with dynamic variable support using mustache syntax (e.g., {{variable_name}}).
When set, the assistant will use this template for the SMS body instead of generating one. Dynamic variables
like {{telnyx_end_user_target}}, {{telnyx_agent_target}}, and custom webhook-provided variables will be resolved
at runtime.
additionalProperties: true
type: object
required:
- type
- send_message
title: SendMessageTool
SendRecordingUrl:
type: boolean
description: Whether to send RecordingUrl in webhooks.
example: false
default: true
SendSIPInfoRequest:
type: object
title: Send SIP Info Request
required:
- content_type
- body
properties:
content_type:
description: Content type of the INFO body. Must be MIME type compliant. There is a 1,400 bytes limit
type: string
example: application/json
body:
description: Content of the SIP INFO
type: string
example: '{"key": "value", "numValue": 100}'
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
content_type: application/json
body: '{"key": "value", "numValue": 100}'
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
Serve:
properties:
version_id:
title: Version Id
type: string
rollout:
title: Rollout
items:
$ref: '#/components/schemas/RolloutSlot'
type: array
type: object
title: Serve
description: "What a rule serves when matched.\n\nExactly one of:\n- ``version_id`` — serve a specific version\n- ``rollout``\
\ — weighted random across versions; weights must sum to\n less than 100, with the leftover routing to the main version"
ServiceDetail:
type: object
properties:
cost_type:
type: string
description: Type of cost (MRC or OTC)
example: MRC
name:
type: string
description: Service name
example: Local DIDs
cost:
type: string
description: Cost per unit as decimal string
example: '1.50'
required:
- cost_type
- name
- cost
ServicePlan:
type: string
description: Indicates the coverage of the termination regions.
enum:
- global
example: global
default: global
Session:
type: object
properties:
id:
type: string
example: bsess_3b108e10-906a-486e-9132-196726ba7979
status:
type: string
enum:
- provisioning
- ready
- closing
- closed
- failed
- expired
failure_reason:
type:
- string
- 'null'
policy:
type: object
properties:
allowed_domains:
type: array
items:
type: string
required:
- allowed_domains
limits:
type: object
properties:
lifetime_s:
type: integer
idle_timeout_s:
type: integer
required:
- lifetime_s
- idle_timeout_s
metadata:
type: object
created_at:
type: string
format: date-time
ready_at:
type:
- string
- 'null'
format: date-time
last_activity_at:
type:
- string
- 'null'
format: date-time
expires_at:
type:
- string
- 'null'
format: date-time
closed_at:
type:
- string
- 'null'
format: date-time
required:
- id
- status
- failure_reason
- policy
- limits
- metadata
- created_at
- ready_at
- last_activity_at
- expires_at
- closed_at
SessionAnalysisError:
type: object
required:
- code
- message
properties:
code:
type: string
message:
type: string
detail:
type: string
SessionAnalysisErrorResponse:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/SessionAnalysisError'
SessionAnalysisResponse:
type: object
required:
- session_id
- cost
- root
- meta
properties:
session_id:
type: string
description: Identifier for the analyzed session.
cost:
$ref: '#/components/schemas/CostSummary'
root:
$ref: '#/components/schemas/EventNode'
meta:
$ref: '#/components/schemas/ResponseMeta'
SettingsDataErrorMessage:
title: SettingsDataErrorMessage
required:
- message
type: object
properties:
message:
title: Message
type: string
SettingsEnvelope:
type: object
properties:
data:
$ref: '#/components/schemas/RetrievalSettingsWrapper'
SettingsRequest:
type: object
properties:
retrieval:
$ref: '#/components/schemas/RetrievalSettings'
SharedCampaign:
title: SharedCampaign
required:
- brandId
- campaignId
- usecase
type: object
properties:
brandId:
title: Brandid
type: string
description: Alphanumeric identifier of the brand associated with this campaign.
campaignId:
title: Campaignid
type: string
description: Alphanumeric identifier assigned by the registry for a campaign. This identifier is required by the
NetNumber OSR SMS enabling process of 10DLC.
createDate:
title: Createdate
type: string
description: Unix timestamp when campaign was created.
status:
title: Status
type: string
description: 'Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE
status. '
usecase:
title: Usecase
type: string
description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases
available for given brand.
description: Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign
is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to
the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or
expired(non-reversible), campaign data is deleted from the OSR service. Most attributes of campaignare immutable,
including **usecase**, **vertical**, **brandId** and **cspId**.
SharedCampaignRecordSet:
title: SharedCampaignRecordSet
type: object
properties:
page:
title: Page
type: integer
records:
title: Records
type: array
items:
$ref: '#/components/schemas/SharedCampaign'
totalRecords:
title: Totalrecords
type: integer
SharedToolListResponse:
properties:
data:
items:
$ref: '#/components/schemas/SharedToolResponse'
type: array
title: Data
meta:
$ref: '#/components/schemas/Meta'
type: object
required:
- data
- meta
title: SharedToolListResponse
SharedToolResponse:
properties:
id:
type: string
title: Id
type:
type: string
title: Type
display_name:
title: Display Name
type: string
tool_definition:
additionalProperties: true
type: object
title: Tool Definition
timeout_ms:
type: integer
title: Timeout Ms
default: 5000
created_at:
title: Created At
type: string
type: object
required:
- id
- type
- tool_definition
title: SharedToolResponse
ShipInspection:
type: object
properties:
record_type:
type: string
const: build_log_inspection
description: Stable record type retained by both inspection path aliases.
runtime:
type: string
stage:
type: string
enum:
- build
- platform
- pre_build
- deploy
- security_review
- none
- pending
reason:
type: string
snippet:
type: string
created_at:
type: string
format: date-time
ShipInspectionResponseWrapper:
type: object
properties:
data:
$ref: '#/components/schemas/ShipInspection'
ShortCode:
type: object
required:
- messaging_profile_id
example:
record_type: short_code
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
short_code: '12345'
country_code: US
messaging_profile_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
tags:
- test_customer
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
properties:
record_type:
type: string
example: short_code
enum:
- short_code
description: Identifies the type of the resource.
readOnly: true
id:
type: string
format: uuid
description: Identifies the type of resource.
readOnly: true
short_code:
type: string
description: Short digit sequence used to address messages.
readOnly: true
country_code:
type: string
description: ISO 3166-1 alpha-2 country code.
pattern: ^[A-Z]{2}$
example: US
readOnly: true
messaging_profile_id:
type:
- string
- 'null'
description: Unique identifier for a messaging profile.
tags:
type:
- array
description: Tags associated with the resource.
items:
type: string
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
SignaturePayload:
type: object
required:
- image_base64
properties:
image_base64:
type: string
minLength: 1
maxLength: 60000
description: PNG image, base64-encoded.
signer_name:
type: string
nullable: true
maxLength: 200
description: Optional. When absent the rendered PDF falls back to the enterprise contact's legal name.
SimCardDataUsageNotification:
type: object
description: The SIM card individual data usage notification information.
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 79228acc-3f08-4e70-ac68-cb5aae8b537a
sim_card_id:
type: string
format: uuid
description: The identification UUID of the related SIM card resource.
example: b34c1683-cd85-4493-b9a5-315eb4bc5e19
record_type:
type: string
example: sim_card_data_usage_notification
readOnly: true
threshold:
type: object
description: Data usage threshold that will trigger the notification.
properties:
amount:
type: string
example: '2048.1'
unit:
type: string
example: MB
enum:
- MB
- GB
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
example:
id: 79228acc-3f08-4e70-ac68-cb5aae8b537a
sim_card_id: b34c1683-cd85-4493-b9a5-315eb4bc5e19
threshold:
amount: '2048.0'
unit: MB
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
SimCardOrderCreate:
title: SimCardOrderCreate
type: object
properties:
address_id:
type: string
description: Uniquely identifies the address for the order.
example: '1293384261075731499'
quantity:
description: The amount of SIM cards to order.
type: integer
minimum: 1
example: 23
required:
- address_id
- quantity
SimCardUsageDetailRecord:
type: object
properties:
id:
type: string
description: Unique identifier for this SIM Card Usage
example: 3ca7bd3d-7d82-4e07-9df4-009123068320
format: uuid
created_at:
type: string
description: Event creation time
format: date-time
example: '2020-07-01T00:00:00Z'
closed_at:
type: string
description: Event close time
format: date-time
example: '2020-07-01T00:00:00Z'
ip_address:
type: string
description: Ip address that generated the event
example: 100.64.1.2
downlink_data:
type: number
description: Number of megabytes downloaded
example: 0.124
imsi:
type: string
description: International Mobile Subscriber Identity
example: '311210393720093'
mcc:
type: string
description: Mobile country code
example: '204'
mnc:
type: string
description: Mobile network code
example: '69'
currency:
type: string
description: Telnyx account currency used to describe monetary values, including billing cost
example: USD
data_unit:
type: string
description: Unit of wireless link consumption
example: MB
data_rate:
type: string
description: Currency amount per billing unit used to calculate the Telnyx billing cost
example: '0.06000'
sim_group_name:
type: string
description: Sim group name for sim card
example: SIMBillingInfo test - otheraccount
sim_card_id:
type: string
description: Unique identifier for SIM card
example: 7aa66686-b39f-456d-8edc-5b6cffb1432a
sim_group_id:
type: string
description: Unique identifier for SIM group
example: 6c07e2e9-cbc0-49ba-ac0d-c59b59646bb1
sim_card_tags:
type: string
description: User-provided tags
example: mytag
phone_number:
type: string
description: Telephone number associated to SIM card
example: '+15188490209'
uplink_data:
type: number
description: Number of megabytes uploaded
example: 0.7653
data_cost:
type: number
description: Data cost
example: 0.029283
record_type:
type: string
example: sim_card_usage
default: sim_card_usage
required:
- record_type
SimpleLine:
type: object
properties:
type:
type: string
enum:
- simple
example: simple
name:
type: string
description: Service name
example: Port Out
alias:
type: string
description: Service alias
example: port_out
quantity:
type: integer
description: Number of items
example: 100
amount:
type: string
description: Total amount as decimal string
example: '15.75'
required:
- type
- name
- alias
- quantity
- amount
SimpleSIMCard:
type: object
title: SIMCard
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
example: sim_card
readOnly: true
status:
$ref: '#/components/schemas/SIMCardStatus'
type:
type: string
description: The type of SIM card
readOnly: true
example: physical
enum:
- physical
- esim
iccid:
type: string
description: 'The ICCID is the identifier of the specific SIM card/chip. Each SIM is internationally identified
by its integrated circuit card identifier (ICCID). ICCIDs are stored in the SIM card''s memory and are also engraved
or printed on the SIM card body during a process called personalization.
'
readOnly: true
example: '89310410106543789301'
imsi:
type: string
description: 'SIM cards are identified on their individual network operators by a unique International Mobile Subscriber
Identity (IMSI).
Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs.
The IMSI is stored in the Subscriber Identity Module (SIM) inside the device and is sent by the device to the
appropriate network. It is used to acquire the details of the device in the Home Location Register (HLR) or the
Visitor Location Register (VLR).
'
readOnly: true
example: 081932214823362973
msisdn:
type: string
description: 'Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile
phone number internationally.
MSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which
identifies the subscriber''s operator.
'
readOnly: true
example: '+13109976224'
sim_card_group_id:
type: string
format: uuid
description: The group SIMCardGroup identification. This attribute can be null when it's present in
an associated resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
tags:
type: array
description: Searchable tags associated with the SIM card
items:
type: string
example:
- personal
- customers
- active-customers
data_limit:
type: object
description: The SIM card individual data limit configuration.
readOnly: true
properties:
amount:
type: string
example: '2048.0'
unit:
type: string
example: MB
enum:
- MB
- GB
current_billing_period_consumed_data:
type: object
description: The SIM card consumption so far in the current billing cycle.
readOnly: true
properties:
amount:
type: string
example: '2049.0'
unit:
type: string
example: MB
default: MB
actions_in_progress:
type: boolean
description: Indicate whether the SIM card has any pending (in-progress) actions.
readOnly: true
example: true
default: false
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
esim_installation_status:
type:
- string
- 'null'
description: The installation status of the eSIM. Only applicable for eSIM cards.
readOnly: true
example: released
enum:
- released
- disabled
version:
type: string
description: The version of the SIM card.
readOnly: true
example: '4.3'
resources_with_in_progress_actions:
type: array
description: List of resources with actions in progress.
readOnly: true
items:
type: object
example: []
eid:
type:
- string
- 'null'
description: The Embedded Identity Document (eID) for eSIM cards.
readOnly: true
example: null
authorized_imeis:
type:
- array
- 'null'
description: List of IMEIs authorized to use a given SIM card.
items:
type: string
example:
- '106516771852751'
- '534051870479563'
- '508821468377961'
voice_enabled:
type: boolean
description: Indicates whether voice services are enabled for the SIM card.
readOnly: true
example: false
default: false
SimplifiedOTAUpdate:
type: object
title: OTAUpdate
description: This object represents an Over the Air (OTA) update request. It allows tracking the current status of a
operation that apply settings in a particular SIM card.
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
example: ota_update
readOnly: true
sim_card_id:
type: string
format: uuid
description: The identification UUID of the related SIM card resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
type:
type: string
description: Represents the type of the operation requested. This will relate directly to the source of the request.
enum:
- sim_card_network_preferences
example: sim_card_network_preferences
status:
type: string
enum:
- in-progress
- completed
- failed
example: in-progress
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
SingleManagedAccountGlobalOutboundChannels:
title: Global Outbound Channels Details for a Managed Account
properties:
channel_limit:
type: integer
description: Integer value that indicates the number of allocatable global outbound channels that are allocated
to the managed account. If the value is 0 then the account will have no usable channels and will not be able to
perform outbound calling.
example: 30
email:
type: string
description: The email of the managed account.
example: customer@example.org
id:
type: string
description: The user ID of the managed account.
example: 096abcde-1122-3344-ab77-ff0123456789
manager_account_id:
type: string
description: The user ID of the manager of the account.
example: beeabcde-1122-3344-ab77-ff0123456789
record_type:
type: string
description: The name of the type of data in the response.
example: managed_account_global_outbound_settings
example:
channel_limit: 30
email: allocate_demo@customer.com
id: 096abcde-1122-3344-ab77-ff0123456789
manager_account_id: beeabcde-1122-3344-ab77-ff0123456789
record_type: managed_account_global_outbound_settings
type: object
SipHeader:
type: object
title: SIP Header
required:
- name
- value
properties:
name:
description: The name of the header to add.
type: string
enum:
- User-to-User
example: User-to-User
value:
description: The value of the header.
type: string
example: value
example:
name: User-to-User
value: value
SipRegion:
type: string
enum:
- US
- Europe
- Canada
- Australia
- Middle East
title: SipRegion
description: 'SIP region passed to Telnyx when initiating an outbound call. Values
match the Telnyx TeXML `SipRegion` parameter exactly. Telnyx defaults to
`US` when omitted.'
SipRegistrationStatus:
type: object
properties:
connection_id:
type: string
description: Identifier of the connection associated with the credential.
connection_name:
type: string
description: Human-readable connection name.
credential_type:
type: string
description: The credential type that was looked up.
enum:
- uac_external_credential
- telephony_credential
- sip_credential_connection
credential_username:
type: string
description: SIP username used for the registration.
registered:
type: boolean
description: True if the endpoint is currently registered.
sip_registration_status:
type: string
description: Human-readable registration status derived from the registrar state.
enum:
- unregistering
- connection_disabled
- standby
- failed
- trying
- registered
- unknown
last_registration_response:
type: string
nullable: true
description: SIP response from the last registration attempt.
example: 200 OK
sip_registration_details:
type: object
description: 'Detailed registration information reported by the registrar. The populated fields depend on `credential_type`:
UAC external credentials report `auth_retries`, `uptime`, `next_action_at`, `failures`, and `sip_uri_user_host`;
telephony credentials and SIP credential connections report `ua_ip`, `ua_port`, `transport`, and `last_modified`.
All types report `expires`, but its unit differs by `credential_type` — see that field.'
properties:
auth_retries:
type: integer
description: Number of authentication retries on the last attempt (uac_external_credential).
expires:
type: integer
description: 'When the current registration expires. The unit depends on `credential_type`: for `uac_external_credential`
this is a Unix timestamp (seconds since epoch) of the next scheduled re-registration; for `telephony_credential`
and `sip_credential_connection` this is the registration lifetime in seconds as negotiated with the registrar
(the `Expires` value, defaulting to 3600 when the endpoint sends none).'
uptime:
type: integer
description: Registration uptime reported by the registrar (uac_external_credential).
next_action_at:
type: integer
description: Unix timestamp of the next scheduled registration action (uac_external_credential).
failures:
type: integer
description: Count of consecutive registration failures (uac_external_credential).
sip_uri_user_host:
type: string
description: SIP URI user@host of the registered contact (uac_external_credential).
ua_ip:
type: string
description: IP address of the registered user agent (telephony_credential and sip_credential_connection).
ua_port:
type: integer
description: Port of the registered user agent (telephony_credential and sip_credential_connection).
transport:
type: string
description: Transport used for the registration, e.g. UDP/TCP/TLS (telephony_credential and sip_credential_connection).
last_modified:
type: string
description: Timestamp when the registration was last modified (telephony_credential and sip_credential_connection).
SiprecConnector:
type: object
title: SIPREC connector configuration
required:
- host
- port
- name
properties:
host:
description: Hostname/IPv4 address of the SIPREC SRS.
type: string
example: siprec.telnyx.com
port:
description: Port for the SIPREC SRS.
type: integer
example: 5060
name:
description: Name for the SIPREC connector resource.
type: string
example: my-siprec-connector
app_subdomain:
description: Subdomain to route the call when using Telnyx SRS (optional for non-Telnyx SRS).
type: string
example: my-app-domain
example:
host: siprec.telnyx.com
port: 5060
name: my-siprec-connector
app_subdomain: my-app
SiprecConnectorResponse:
type: object
title: SIPREC Connector Response
required:
- data
properties:
data:
type: object
title: SIPREC Connector
properties:
record_type:
type: string
example: siprec_connector
name:
type: string
description: Name for the SIPREC connector resource.
example: siprec-connector
host:
type: string
description: Hostname/IPv4 address of the SIPREC SRS.
example: siprec.telnyx.com
port:
type: integer
description: Port for the SIPREC SRS.
example: 5060
app_subdomain:
type: string
description: Subdomain to route calls when using Telnyx SRS (optional).
example: my-app-domain
created_at:
type: string
description: ISO 8601 formatted date/time of creation.
example: '2024-01-23T18:10:02.574Z'
updated_at:
type: string
description: ISO 8601 formatted date/time of last update.
example: '2024-01-23T18:10:02.574Z'
SkipTurnTool:
properties:
type:
type: string
enum:
- skip_turn
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
skip_turn:
$ref: '#/components/schemas/SkipTurnToolParams'
type: object
required:
- type
- skip_turn
title: SkipTurnTool
SkipTurnToolParams:
properties:
description:
type: string
default: This tool is used to skip the assistant turn without producing a response.
description: The description of the function that will be passed to the assistant.
type: object
title: SkipTurnToolParams
SlimPhoneNumberDetailed:
type: object
example:
id: '1293384261075731499'
record_type: phone_number
phone_number: '+19705555098'
country_iso_alpha2: US
status: active
external_pin: '1234'
connection_id: '1293384261075731499'
customer_reference: customer-reference
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
emergency_enabled: true
emergency_address_id: '1315261609962112019'
emergency_status: active
call_forwarding_enabled: true
cnam_listing_enabled: true
caller_id_name_enabled: true
call_recording_enabled: true
t38_fax_gateway_enabled: true
phone_number_type: local
inbound_call_screening: disabled
purchased_at: '2019-10-23T18:10:00.000Z'
created_at: '2019-10-23T18:10:00.000Z'
updated_at: '2019-10-24T18:10:00.000Z'
hd_voice_enabled: true
activated_at: '2019-10-23T18:10:00.000Z'
properties:
id:
$ref: '#/components/schemas/numbers_IntId'
record_type:
type: string
example: phone_number_slim
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number associated with this record.
readOnly: true
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the phone number.
example: US
readOnly: true
status:
type: string
description: The phone number's current status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- port-failed
- active
- deleted
- emergency-only
- ported-out
- port-out-pending
- requirement-info-pending
- requirement-info-under-review
- requirement-info-exception
- provision-pending
readOnly: true
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note
that not all carriers cooperate with this security mechanism.
connection_id:
type: string
description: Identifies the connection associated with the phone number.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
emergency_enabled:
type: boolean
description: Indicates whether emergency services are enabled for this number.
readOnly: true
emergency_address_id:
type: string
description: Identifies the emergency address associated with the phone number.
readOnly: true
emergency_status:
type: string
description: Indicates the status of the provisioning of emergency services for the phone number. This field contains
information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned
but is not yet enabled/disabled.
enum:
- active
- deprovisioning
- disabled
- provisioning
- provisioning-failed
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
cnam_listing_enabled:
type: boolean
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
caller_id_name_enabled:
type: boolean
description: Indicates whether caller ID is enabled for this number.
readOnly: true
call_recording_enabled:
type: boolean
description: Indicates whether call recording is enabled for this number.
readOnly: true
t38_fax_gateway_enabled:
type: boolean
description: Indicates whether T38 Fax Gateway for inbound calls to this number.
readOnly: true
purchased_at:
type: string
description: ISO 8601 formatted date indicating when the resource was purchased.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
phone_number_type:
type: string
description: 'The phone number''s type.
Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase
completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.'
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
- tollfree
- shortcode
- longcode
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
readOnly: true
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users
to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls.
This feature has an additional per-number monthly cost associated with it.
activated_at:
description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending
or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated
before this field was tracked.
anyOf:
- type: string
format: date-time
- type: 'null'
readOnly: true
SonioxProviderParams:
type: object
description: Soniox provider-specific parameters. Every voice speaks all supported languages; set `language` to the
language of the text.
required:
- voice_id
properties:
voice_id:
type: string
description: Soniox voice name from the [voices listing](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices),
for example `Emma`.
model_id:
type: string
description: Soniox model.
enum:
- tts-rt-v2
default: tts-rt-v2
language:
type: string
description: Two-letter ISO 639-1 code of the text.
default: en
speed:
type: number
format: float
description: Speaking rate. 1.0 is normal speed.
minimum: 0.7
maximum: 1.3
default: 1.0
reduce_silence:
type: boolean
description: Shortens the pauses between words.
default: false
audio_format:
type: string
description: Audio output format.
enum:
- mp3
- wav
- pcm_s16le
- pcm_mulaw
- pcm_alaw
default: mp3
sample_rate:
type: integer
description: Audio sample rate in Hz. `pcm_mulaw` and `pcm_alaw` accept 8000 only; `mp3` does not accept 8000. Defaults
to 24000, or 8000 for `pcm_mulaw` and `pcm_alaw`.
enum:
- 8000
- 16000
- 24000
- 44100
- 48000
SonioxVoiceSettings:
type: object
title: Soniox Voice Settings
properties:
type:
type: string
enum:
- soniox
description: Voice settings provider type
speed:
type: number
format: float
minimum: 0.7
maximum: 1.3
default: 1.0
description: Speaking rate. 1.0 is normal speed.
reduce_silence:
type: boolean
default: false
description: Shortens the pauses between words.
required:
- type
SoundModifications:
type: object
title: Sound modifications
description: Use this field to modify sound effects, for example adjust the pitch.
properties:
pitch:
description: Set the pitch directly, value should be > 0, default 1 (lower = lower tone)
type: number
format: float
example: 0.8
semitone:
description: Adjust the pitch in semitones, values should be between -14 and 14, default 0
type: number
format: float
example: -10
octaves:
description: Adjust the pitch in octaves, values should be between -1 and 1, default 0
type: number
format: float
example: -0.5
track:
description: The track to which the sound modifications will be applied. Accepted values are `inbound` or `outbound`
type: string
example: inbound
default: outbound
example:
pitch: 0.8
semitone: -2
octaves: 0.1
track: both
Source:
properties:
id:
type: string
title: Id
description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by
`ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.'
session_id:
anyOf:
- type: string
- type: 'null'
title: Session Id
description: The session this source was ingested as. Null for a remembered fact.
memory_count:
type: integer
title: Memory Count
description: Memories extracted from this source. A memory derived from several sources is not counted here.
created_at:
anyOf:
- type: string
- type: 'null'
title: Created At
description: When the source was first stored.
updated_at:
anyOf:
- type: string
- type: 'null'
title: Updated At
description: When the source was last written; re-ingesting moves it.
type: object
required:
- id
- session_id
- memory_count
title: Source
SourceEnvelope:
type: object
description: Envelope containing a single collection source.
properties:
data:
$ref: '#/components/schemas/collections_Source'
SourceListEnvelope:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/collections_Source'
SourceListResponse:
properties:
data:
items:
$ref: '#/components/schemas/Source'
type: array
title: Data
meta:
$ref: '#/components/schemas/PageMeta'
type: object
required:
- data
- meta
title: SourceListResponse
SourceReconcileEnvelope:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/collections_Source'
meta:
$ref: '#/components/schemas/SourceReconcileMeta'
SourceReconcileMeta:
type: object
description: Reports which source IDs were added, retained, and removed by a replace operation.
properties:
added:
type: array
items:
type: string
retained:
type: array
items:
type: string
removed:
type: array
items:
type: string
SourceRequest:
type: object
required:
- source_type
properties:
source_type:
$ref: '#/components/schemas/SourceType'
bucket_id:
type: string
description: The Telnyx Storage bucket name. Required when `source_type` is `bucket`; ignored otherwise.
example: policy-docs
allOf:
- if:
properties:
source_type:
const: bucket
required:
- source_type
then:
properties:
bucket_id:
type: string
required:
- bucket_id
SourceResponse:
properties:
data:
$ref: '#/components/schemas/SourceWithContent'
type: object
required:
- data
title: SourceResponse
SourceType:
type: string
description: The type of Telnyx data attached as a source. `bucket` requires an additional `bucket_id`. Only `voice`
is searchable today; `meeting_bot`, `message`, and `bucket` attach but are not yet searchable (Coming soon).
enum:
- voice
- meeting_bot
- message
- bucket
example: voice
SourceWithContent:
properties:
id:
type: string
title: Id
description: 'Identifies one source within its profile: an ingested session, or one remembered fact. Returned by
`ingest` and `remember` when the write is accepted. Re-ingesting a session keeps its source id.'
session_id:
anyOf:
- type: string
- type: 'null'
title: Session Id
description: The session this source was ingested as. Null for a remembered fact.
memory_count:
type: integer
title: Memory Count
description: Memories extracted from this source. A memory derived from several sources is not counted here.
created_at:
anyOf:
- type: string
- type: 'null'
title: Created At
description: When the source was first stored.
updated_at:
anyOf:
- type: string
- type: 'null'
title: Updated At
description: When the source was last written; re-ingesting moves it.
content:
title: Content
description: 'What was stored, in the shape it was sent: an ingested JSON body as JSON, a string body or a remembered
fact as a string. A session ingested before formats were recorded is returned as the text it was stored as.'
anyOf:
- type: object
additionalProperties: true
- type:
- array
- string
- number
- boolean
type: object
required:
- id
- session_id
- memory_count
- content
title: SourceWithContent
SpeakMeetingSessionRequest:
title: SpeakMeetingSessionRequest
type: object
additionalProperties: false
required:
- text
properties:
text:
type: string
minLength: 1
maxLength: 4000
description: Text for the bot to speak.
voice:
type: string
minLength: 1
maxLength: 100
description: Voice identifier to use for this utterance. When supplied, it overrides the session-default voice configured
at creation; otherwise the speak action uses that session default.
interrupt:
type: boolean
description: If true, interrupt any currently playing audio to speak this text immediately.
SpeakNode:
properties:
type:
type: string
const: speak
title: Type
description: Node kind discriminator. Always `speak` for a speak node.
default: speak
id:
type: string
title: Id
description: Caller-supplied unique identifier for this node within the flow.
name:
title: Name
description: Optional human-readable label, displayed in authoring UIs.
type: string
message:
type: string
title: Message
description: Message delivered to the user verbatim when the flow reaches this node. No LLM turn — the text is spoken/sent
exactly as written. `{{variable}}` placeholders are interpolated from the conversation's dynamic variables; an
unresolved placeholder renders as an empty string. After delivering, the flow routes via the node's outgoing `llm`
/ `expression` edges (commonly a single unconditional edge).
position:
description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips
so frontends can persist graph layout across reloads.
$ref: '#/components/schemas/NodePosition'
type: object
required:
- id
- message
title: SpeakNode
description: A standalone scripted-message step in a flow, as returned by the API.
SpeakNodeReq:
properties:
type:
type: string
const: speak
title: Type
description: Node kind discriminator. Always `speak` for a speak node.
default: speak
id:
type: string
title: Id
description: Caller-supplied unique identifier for this node within the flow.
example: n_greeting
name:
title: Name
description: Optional human-readable label, displayed in authoring UIs.
type: string
example: Greeting
message:
type: string
title: Message
description: Message delivered to the user verbatim when the flow reaches this node. No LLM turn — the text is spoken/sent
exactly as written. `{{variable}}` placeholders are interpolated from the conversation's dynamic variables; an
unresolved placeholder renders as an empty string. After delivering, the flow routes via the node's outgoing `llm`
/ `expression` edges (commonly a single unconditional edge).
example: Thanks for calling, {{caller_name}}. Connecting you now.
position:
description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips
so frontends can persist graph layout across reloads.
$ref: '#/components/schemas/NodePosition'
example:
x: 60
y: 80
type: object
required:
- id
- message
title: SpeakNodeReq
description: 'A standalone scripted-message step in a flow, as supplied by clients.
Unlike a prompt node, a speak node has no instructions or model — it isn''t
an LLM turn. Reaching it delivers `message` to the user verbatim (with
`{{variable}}` interpolation), then routes via outgoing `llm` /
`expression` edges.'
example:
id: n_greeting
message: Thanks for calling, {{caller_name}}. Connecting you now.
name: Greeting
position:
x: 60
y: 80
type: speak
SpeakRequest:
type: object
title: Speak Request
required:
- payload
- voice
properties:
payload:
description: The text or SSML to be converted into speech. There is a 3,000 character limit.
type: string
example: Say this on the call
payload_type:
description: The type of the provided payload. The payload can either be plain text, or Speech Synthesis Markup
Language (SSML).
default: text
type: string
enum:
- text
- ssml
example: ssml
service_level:
description: This parameter impacts speech quality, language options and payload types. When using `basic`, only
the `en-US` language and payload type `text` are allowed.
default: premium
type: string
enum:
- basic
- premium
example: premium
stop:
description: When specified, it stops the current audio being played. Specify `current` to stop the current audio
being played, and to play the next file in the queue. Specify `all` to stop the current audio file being played
and to also clear all audio files from the queue.
type: string
example: current
voice:
description: "Specifies the voice used in speech synthesis.\n\n- Define voices using the format `..`.\
\ Specifying only the provider will give default values for voice_id and model_id.\n\n **Supported Providers:**\n\
- **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which provide more realistic,\
\ human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`). Check the [available\
\ voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n- **Azure:**\
\ Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-US-BrianMultilingualNeural`, `Azure.en-US-Ava:DragonHDLatestNeural`).\
\ For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\
\ Use `voice_settings` to configure custom deployments, regions, or API keys.\n- **ElevenLabs:** Use `ElevenLabs..`\
\ (e.g., `ElevenLabs.eleven_multilingual_v2.21m00Tcm4TlvDq8ikWAM`). The `ModelId` part is optional. To use ElevenLabs,\
\ you must provide your ElevenLabs API key as an integration identifier secret in `\"voice_settings\": {\"api_key_ref\"\
: \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)\
\ for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n- **Telnyx:** Use\
\ `Telnyx..` (e.g., `Telnyx.KokoroTTS.af`). Use `voice_settings` to configure voice_speed\
\ and other synthesis parameters. `Bayan` provides Arabic (multiple dialects) and English voices (e.g., `Telnyx.Bayan.Ahmed`,\
\ `Telnyx.Bayan.Amanda`). `Sukhan` provides Urdu voices (e.g., `Telnyx.Sukhan.urdu-professor`); `voice_speed`\
\ is not supported.\n- **Minimax:** Use `Minimax..` (e.g., `Minimax.speech-02-hd.Wise_Woman`).\
\ Supported models: `speech-02-turbo`, `speech-02-hd`, `speech-2.6-turbo`, `speech-2.8-turbo`. Use `voice_settings`\
\ to configure speed, volume, pitch, and language_boost.\n- **Resemble:** Use `Resemble.Turbo.` (e.g.,\
\ `Resemble.Turbo.my_voice`). Only `Turbo` model is supported. Use `voice_settings` to configure precision, sample_rate,\
\ and format.\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`, `Inworld.Max.Oliver`,\
\ `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`. Use `voice_settings` to configure `delivery_mode`\
\ (`STABLE`, `BALANCED`, `CREATIVE`), supported by `TTS2` only.\n- **Fish Audio:** Use `FishAudio..`\
\ (e.g., `FishAudio.s2.1-pro.`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish\
\ Voice-Library reference ID.\n- **Soniox:** Use `Soniox..` (e.g., `Soniox.tts-rt-v2.Emma`).\
\ Supported model: `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices).\
\ Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for\
\ example `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n\
- **xAI:** Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:**\
\ Use `Humain.` (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`,\
\ `nourah-ar`, `abdullah-ar`. Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment.\n\n\
For service_level basic, you may define the gender of the speaker (male or female)."
type: string
example: Telnyx.KokoroTTS.af
voice_settings:
description: The settings associated with the voice selected
oneOf:
- $ref: '#/components/schemas/ElevenLabsVoiceSettings'
- $ref: '#/components/schemas/TelnyxVoiceSettings'
- $ref: '#/components/schemas/AWSVoiceSettings'
- $ref: '#/components/schemas/MinimaxVoiceSettings'
- $ref: '#/components/schemas/AzureVoiceSettings'
- $ref: '#/components/schemas/ResembleVoiceSettings'
- $ref: '#/components/schemas/InworldVoiceSettings'
- $ref: '#/components/schemas/XAIVoiceSettings'
- $ref: '#/components/schemas/SonioxVoiceSettings'
discriminator:
propertyName: type
mapping:
elevenlabs: '#/components/schemas/ElevenLabsVoiceSettings'
telnyx: '#/components/schemas/TelnyxVoiceSettings'
aws: '#/components/schemas/AWSVoiceSettings'
minimax: '#/components/schemas/MinimaxVoiceSettings'
azure: '#/components/schemas/AzureVoiceSettings'
resemble: '#/components/schemas/ResembleVoiceSettings'
inworld: '#/components/schemas/InworldVoiceSettings'
xai: '#/components/schemas/XAIVoiceSettings'
soniox: '#/components/schemas/SonioxVoiceSettings'
language:
description: The language you want spoken. This parameter is ignored when a `Polly.*` voice is specified.
type: string
enum:
- arb
- cmn-CN
- cy-GB
- da-DK
- de-DE
- en-AU
- en-GB
- en-GB-WLS
- en-IN
- en-US
- es-ES
- es-MX
- es-US
- fr-CA
- fr-FR
- hi-IN
- is-IS
- it-IT
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pl-PL
- pt-BR
- pt-PT
- ro-RO
- ru-RU
- sv-SE
- tr-TR
example: en-US
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
loop:
$ref: '#/components/schemas/Loopcount'
description: The number of times to play the audio file. Use `infinity` to loop indefinitely. Defaults to 1.
target_legs:
description: Specifies which legs of the call should receive the spoken audio.
type: string
enum:
- self
- opposite
- both
default: self
example: both
example:
payload: Say this on the call
payload_type: text
service_level: basic
stop: current
voice: female
language: arb
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
SpeechmaticsTranscriptionLanguage:
title: Speechmatics transcription engine list of languages
type: string
description: 'Language to use for speech recognition. Accepted values depend on the selected `transcription_model`.
`speechmatics/standard` supports: `en`, `ba`, `eu`, `gl`, `ga`, `mt`, `mn`, `sw`, `ug`, `cy`, `ar_en`, `cmn_en`, `en_ms`,
`en_ta`, `tl`, `es-bilingual-en`, `cmn_en_ms_ta`. `speechmatics/linden-1` (preview) supports the same languages as
Speechmatics Realtime: `ar`, `ar_en`, `ba`, `be`, `bg`, `bn`, `ca`, `cmn`, `cmn_en`, `cmn_en_ms_ta`, `cs`, `cy`, `da`,
`de`, `el`, `en`, `en_ms`, `en_ta`, `eo`, `es`, `es-bilingual-en`, `et`, `eu`, `fa`, `fi`, `fr`, `ga`, `gl`, `he`,
`hi`, `hr`, `hu`, `ia`, `id`, `it`, `ja`, `ko`, `lt`, `lv`, `mn`, `mr`, `ms`, `mt`, `nl`, `no`, `pl`, `pt`, `ro`,
`ru`, `sk`, `sl`, `sv`, `sw`, `ta`, `th`, `tl`, `tr`, `ug`, `uk`, `ur`, `vi`, `yue`, plus the spelling and script
variants `en-US`, `en-GB`, `en-AU`, `cmn-Hans`, and `cmn-Hant` (`en` alone uses the default spelling). A value outside
the selected model''s list is rejected. For `speechmatics/standard`, unset, blank, `auto`, `auto_beta`, or `multi`
defaults to `en`; for `speechmatics/linden-1`, only an unset language defaults to `en`, and `auto`, `auto_beta`, or
`multi` is rejected.'
example: en
default: en
enum:
- en
- ba
- eu
- gl
- ga
- mt
- mn
- sw
- ug
- cy
- ar_en
- cmn_en
- en_ms
- en_ta
- tl
- es-bilingual-en
- cmn_en_ms_ta
- ar
- be
- bg
- bn
- ca
- cmn
- cs
- da
- de
- el
- eo
- es
- et
- fa
- fi
- fr
- he
- hi
- hr
- hu
- ia
- id
- it
- ja
- ko
- lt
- lv
- mr
- ms
- nl
- 'no'
- pl
- pt
- ro
- ru
- sk
- sl
- sv
- ta
- th
- tr
- uk
- ur
- vi
- yue
- en-US
- en-GB
- en-AU
- cmn-Hans
- cmn-Hant
SpendEvent:
type: object
additionalProperties: false
properties:
id:
type: string
format: uuid
request_id:
type: string
format: uuid
created_at:
type: string
format: date-time
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
token_key_id:
type: string
format: uuid
end_user_id:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
description: Public alias that served (the last attempt); rate_version, biller and provider_key_id follow it.
requested_model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
description: Public alias the caller requested; differs from model only when a group fallback served.
attempts:
type: integer
minimum: 0
description: Provider attempts begun for the request (fallbacks included); 0 for a cache hit. Token and cost totals
sum every attempt.
input_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
output_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
cost:
anyOf:
- $ref: '#/components/schemas/Money'
- type: 'null'
status:
type: string
enum:
- succeeded
- failed
- partial
- unknown
cache_hit:
type: boolean
usage_status:
type: string
enum:
- known
- unknown
- reconciled
biller:
type: string
enum:
- telnyx
- provider
- none
configuration_version:
type: integer
minimum: 1
rate_version:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
provider_key_id:
anyOf:
- type: string
format: uuid
- type: 'null'
reservation_micro_usd:
type: integer
minimum: 0
metadata:
$ref: '#/components/schemas/RequestMetadata'
required:
- id
- request_id
- created_at
- token_group_id
- token_user_id
- token_key_id
- end_user_id
- model
- requested_model
- attempts
- input_tokens
- output_tokens
- cost
- status
- cache_hit
- usage_status
- biller
- configuration_version
- rate_version
- provider_key_id
- reservation_micro_usd
- metadata
SpendEvents:
type: object
additionalProperties: false
properties:
data:
type: array
items:
$ref: '#/components/schemas/SpendEvent'
meta:
$ref: '#/components/schemas/ai-gateway-spend_PageMeta'
required:
- data
- meta
SpendGroupBy:
anyOf:
- $ref: '#/components/schemas/ai-gateway-spend_Scope'
- type: string
pattern: ^metadata:[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$
description: Group by one request tag key. Keys starting with ltg_, telnyx_, litellm_ or cf_ (any case) are rejected.
SpendLimit:
type: object
description: The spend limit, spend and block state of one product and period. The top-level fields describe the total
limit of the account; API key limits are nested in `credential_limits`.
properties:
record_type:
type: string
description: Identifies the type of the resource.
example: spend_limit
product:
type: string
description: Product the entry applies to.
example: inference
product_name:
type: string
description: Display name of the product.
example: Inference
period:
$ref: '#/components/schemas/SpendLimitPeriod'
period_start:
type: string
format: date
description: First UTC day of the current period.
example: '2026-09-24'
period_end:
type: string
format: date
description: Exclusive end of the current period, a UTC date.
example: '2026-09-25'
credential_id:
type: string
nullable: true
description: In write responses, the API key the write was about; `null` for the total limit. Always `null` in list
entries, which describe the total limit.
example: null
limit:
$ref: '#/components/schemas/SpendLimitLimit'
effective_limit_usd:
type: string
nullable: true
description: The limit in USD that is enforced, as a decimal string. `null` means unlimited.
example: '100'
spend_usd:
type: string
nullable: true
description: Spend in USD so far in the period, as a decimal string. It can lag actual usage by about a minute.
`null` when it could not be read.
example: '37.41'
spend_error:
type: string
nullable: true
description: Set when `spend_usd` is `null`.
example: null
blocked:
type: boolean
description: The product is blocked for the whole account in this period (total limit). An API key's own block appears
only in `credential_limits`. Always `false` in write responses; list the limits to read the block state.
example: false
block:
$ref: '#/components/schemas/SpendLimitBlock'
allocation:
$ref: '#/components/schemas/SpendLimitAllocation'
credential_limits:
type: array
description: List responses only. One item per API key limit of the product and period, sorted by `credential_id`,
plus every API key that is still blocked. `[]` when there are none.
items:
$ref: '#/components/schemas/SpendLimitCredentialLimit'
evaluation:
$ref: '#/components/schemas/SpendLimitEvaluation'
required:
- record_type
- product
- product_name
- period
- period_start
- period_end
- limit
- effective_limit_usd
- spend_usd
- spend_error
- blocked
- block
SpendLimitAllocation:
type: object
nullable: true
description: How much of the period's total limit is given to API key limits. `null` unless the period has a total limit
with an amount.
properties:
total_limit_usd:
type: string
description: The total limit in USD, as a decimal string.
example: '1000.00'
allocated_usd:
type: string
description: Sum of the period's API key limits in USD, as a decimal string.
example: '800.00'
unallocated_usd:
type: string
description: 'The part of the total not given to API key limits, as a decimal string: the largest amount a new API
key limit can have.'
example: '200.00'
over_allocated_usd:
type: string
description: How far the API key limits exceed the total, as a decimal string. Non-zero only after Telnyx support
lowered the total below them.
example: '0.00'
required:
- total_limit_usd
- allocated_usd
- unallocated_usd
- over_allocated_usd
SpendLimitBlock:
type: object
nullable: true
description: The active block of the period. `null` when the period is not blocked.
properties:
detected_at:
type: string
format: date-time
description: When the block started.
example: '2026-09-24T08:41:17Z'
spend_usd:
type: string
description: Spend in USD when the block started, as a decimal string.
example: '10.20'
limit_usd:
type: string
description: The limit in USD that the spend went above, as a decimal string.
example: '10'
blocked_until:
type: string
format: date
description: 'Exclusive end of the block: it is lifted at 00:00 UTC on this date at the latest.'
example: '2026-09-25'
required:
- detected_at
- spend_usd
- limit_usd
- blocked_until
SpendLimitCredentialLimit:
type: object
description: The limit, spend and block state of one API key in the product and period.
properties:
credential_id:
type: string
description: Identifier of the API key as recorded on usage. Never the key's secret.
example: KEY0192F3A1B2C3D4E5F6A7B8C9D0E1F2
limit:
$ref: '#/components/schemas/SpendLimitCredentialLimitValue'
spend_usd:
type: string
nullable: true
description: Spend in USD in the period made with exactly this API key, as a decimal string. Usage without an API
key identifier, or with another one, counts only toward the total. `null` when it could not be read.
example: '120.00'
spend_error:
type: string
nullable: true
description: Set when `spend_usd` is `null`.
example: null
blocked:
type: boolean
description: This API key is blocked for the period.
example: false
block:
$ref: '#/components/schemas/SpendLimitBlock'
required:
- credential_id
- limit
- spend_usd
- spend_error
- blocked
- block
SpendLimitCredentialLimitValue:
type: object
nullable: true
description: The limit of one API key. It always has an amount. `null` for an API key that is still blocked after its
limit was removed.
properties:
amount:
type: string
description: Limit in USD, as a decimal string.
example: '300.00'
origin:
type: string
enum:
- self_service
- operator
description: '`self_service` when a user of the account set it, `operator` when Telnyx support did.'
example: self_service
updated_at:
type: string
format: date-time
description: When the limit was last set or changed.
example: '2026-10-20T08:03:40Z'
required:
- amount
- origin
- updated_at
SpendLimitEvaluation:
type: object
description: What a create, update or delete did to the period at once. Only present in write responses.
properties:
spend_usd:
type: string
nullable: true
description: Spend in USD used for the check, as a decimal string. `null` when the spend was not checked.
example: '37.41'
released:
type: boolean
description: The change lifted a block of this period.
example: false
blocked_now:
type: boolean
description: 'The change blocked the product: the spend was already above the new limit.'
example: false
still_over_limit:
type: boolean
description: A block of this period remains because the spend is still above the new limit.
example: false
still_blocked_other_period:
type: boolean
description: The other period has an active block, so the product stays blocked whatever this period's result. For
an API key write, the API key's limit in the other period.
example: false
account_blocked:
type: boolean
description: 'API key writes only: the account itself remains blocked for the product under a total limit. Absent
for total limit writes.'
example: false
evaluation_deferred:
type: boolean
description: The spend could not be checked now. The change is saved and applied within a few minutes.
example: false
note:
type: string
description: Additional information about the result, when there is any.
example: A block was lifted by Telnyx support today; this limit applies from tomorrow.
required:
- spend_usd
- released
- blocked_now
- still_over_limit
- still_blocked_other_period
- evaluation_deferred
SpendLimitLimit:
type: object
nullable: true
description: The limit set on the account for the product and period, whoever set it. `null` when none is set.
properties:
amount:
type: string
nullable: true
description: Limit in USD, as a decimal string. `null` when `unlimited` is true.
example: '100'
unlimited:
type: boolean
description: True when the limit was set to explicitly no cap.
example: false
origin:
type: string
enum:
- self_service
- operator
description: '`self_service` when a user of the account set it, `operator` when Telnyx support did.'
example: self_service
updated_at:
type: string
format: date-time
description: When the limit was last set or changed.
example: '2026-09-24T09:12:03.412Z'
required:
- amount
- unlimited
- origin
- updated_at
SpendLimitListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SpendLimit'
meta:
$ref: '#/components/schemas/spend-limits_PaginationMeta'
required:
- data
SpendLimitPeriod:
type: string
description: '`daily` is the current UTC day; `monthly` is the current UTC calendar month.'
enum:
- daily
- monthly
default: daily
example: daily
SpendLimitResponse:
type: object
properties:
data:
$ref: '#/components/schemas/SpendLimit'
required:
- data
SpendSummary:
type: object
additionalProperties: false
properties:
data:
type: array
items:
$ref: '#/components/schemas/SpendSummaryRow'
meta:
type: object
additionalProperties: false
properties:
page_number:
type: integer
minimum: 1
page_size:
type: integer
minimum: 1
maximum: 100
has_more:
type: boolean
snapshot:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
start_date:
type: string
format: date
end_date:
type: string
format: date
group_by:
$ref: '#/components/schemas/SpendGroupBy'
required:
- page_number
- page_size
- has_more
- snapshot
- start_date
- end_date
- group_by
required:
- data
- meta
SpendSummaryRow:
type: object
additionalProperties: false
properties:
dimension_id:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
name:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
token_group_id:
anyOf:
- type: string
format: uuid
- type: 'null'
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
token_key_id:
anyOf:
- type: string
format: uuid
- type: 'null'
end_user_id:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
spend:
$ref: '#/components/schemas/Money'
requests:
type: integer
minimum: 0
input_tokens:
type: integer
minimum: 0
output_tokens:
type: integer
minimum: 0
unknown_requests:
type: integer
minimum: 0
reserved_spend:
$ref: '#/components/schemas/Money'
metadata_key:
type: string
pattern: ^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$
description: 'Present only for group_by=metadata:: the tag key. dimension_id is then the tag value in text
form (booleans as true/false, integers in decimal), or null for requests without the key; name is null.'
required:
- dimension_id
- name
- spend
- requests
- input_tokens
- output_tokens
- unknown_requests
- reserved_spend
SqlDatabase:
type: object
properties:
record_type:
type: string
example: storage_sqldb
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
name:
type: string
example: my-database
status:
type: string
description: Provisioning status. A database is usable once `status` is `provision_ok`. Once deletion completes,
the database no longer appears in the API.
enum:
- pending
- provision_ok
- provision_failed
- deleting
- delete_failed
example: provision_ok
created_at:
type: string
format: date-time
example: '2026-06-18T14:48:17Z'
updated_at:
type: string
format: date-time
example: '2026-06-18T14:48:17Z'
SqlDatabaseListResponseWrapper:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SqlDatabase'
meta:
$ref: '#/components/schemas/edge-compute_PaginationMeta'
SqlDatabaseQueryRequest:
type: object
properties:
sql:
type: string
description: The SQL to run. Use positional `?` placeholders and supply the values in `params` rather than interpolating
them into this string.
example: SELECT * FROM users WHERE name = ?
params:
type: array
description: Positional bind parameters, in placeholder order. Each value is a string, a number, a boolean, or null;
booleans are cast to `1`/`0`. The count must match the number of `?` placeholders exactly — a mismatch is rejected
with 422 rather than binding null for the ones you left out. (Not enforced for multi-statement scripts or named
parameters, where the placeholder count is not the number bound.)
items:
type:
- string
- number
- boolean
- 'null'
example:
- alice
required:
- sql
SqlDatabaseQueryResponseWrapper:
type: object
properties:
data:
$ref: '#/components/schemas/SqlDatabaseQueryResult'
SqlDatabaseQueryResult:
type: object
properties:
results:
type: array
description: The result rows, each a map of column name to value. Empty for statements that return no rows.
items:
type: object
additionalProperties: true
success:
type: boolean
example: true
count:
type: integer
description: Number of rows returned.
example: 1
duration:
type: number
description: Wall-clock duration of the request, in milliseconds.
example: 2.5
meta:
$ref: '#/components/schemas/SqlDatabaseQueryResultMeta'
SqlDatabaseQueryResultMeta:
type: object
properties:
duration:
type: number
description: Wall-clock duration of the statement, in milliseconds.
example: 1.2
rows_read:
type: integer
example: 3
rows_written:
type: integer
example: 0
last_row_id:
type: integer
description: Rowid of the last inserted row, when applicable.
example: 0
changes:
type: integer
description: Number of rows added, changed, or removed by the statement.
example: 0
SqlDatabaseResponseWrapper:
type: object
properties:
data:
$ref: '#/components/schemas/SqlDatabase'
StartConferenceRecordingRequest:
type: object
title: Start Conference Recording Request
required:
- format
properties:
format:
description: The audio file format used when storing the conference recording. Can be either `mp3` or `wav`.
type: string
enum:
- wav
- mp3
example: mp3
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `conference_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
channels:
description: When `dual`, final audio file will be stereo recorded with the conference creator on the first channel,
and the rest on the second channel.
enum:
- single
- dual
type: string
default: single
example: dual
play_beep:
description: If enabled, a beep sound will be played at the start of a recording.
type: boolean
example: true
trim:
description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
enum:
- trim-silence
type: string
example: trim-silence
custom_file_name:
description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add
a Unix timestamp suffix.
type: string
minLength: 1
maxLength: 40
example: my_recording_file_name
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
format: wav
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
play_beep: true
StartForkingRequest:
type: object
title: Start Forking Request
properties:
rx:
description: The network target, , where the call's incoming RTP media packets should be forwarded.
type: string
example: udp:192.0.2.1:9000
stream_type:
description: Optionally specify a media type to stream. If `decrypted` selected, Telnyx will decrypt incoming SIP
media before forking to the target. `rx` and `tx` are required fields if `decrypted` selected.
type: string
enum:
- decrypted
default: decrypted
example: decrypted
tx:
description: The network target, , where the call's outgoing RTP media packets should be forwarded.
type: string
example: udp:192.0.2.1:9001
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
rx: udp:192.0.2.1:9000
tx: udp:192.0.2.1:9001
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
StartRecordingRequest:
type: object
title: Start Recording Request
required:
- format
- channels
properties:
format:
description: The audio file format used when storing the call recording. Can be either `mp3` or `wav`.
type: string
enum:
- wav
- mp3
example: mp3
channels:
description: When `dual`, final audio file will be stereo recorded with the first leg on channel A, and the rest
on channel B.
enum:
- single
- dual
type: string
example: single
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
play_beep:
description: If enabled, a beep sound will be played at the start of a recording.
type: boolean
example: true
max_length:
description: Defines the maximum length for the recording in seconds. The minimum value is 0. The maximum value
is 14400. The default value is 0 (infinite)
type: integer
example: 100
default: 0
format: int32
timeout_secs:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. Please note that call transcription is used to detect silence
and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite)
type: integer
example: 100
default: 0
format: int32
recording_track:
description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track
is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single
channel).
type: string
example: outbound
default: both
enum:
- both
- inbound
- outbound
trim:
description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
enum:
- trim-silence
type: string
example: trim-silence
custom_file_name:
description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add
a Unix timestamp suffix.
type: string
minLength: 1
maxLength: 40
example: my_recording_file_name
transcription:
description: Enable post recording transcription. The default value is false.
type: boolean
default: false
example: true
transcription_engine:
description: 'Engine to use for speech recognition. `A` - `Google`, `B` - `Telnyx`, `deepgram/nova-3` - `Deepgram
Nova-3`. Note: `deepgram/nova-3` supports only `en` and `en-{Region}` languages.'
type: string
enum:
- A
- B
- deepgram/nova-3
default: A
example: A
transcription_language:
$ref: '#/components/schemas/TranscriptionLanguage'
transcription_profanity_filter:
description: Enables profanity_filter. Applies to `google` engine only.
type: boolean
default: false
example: true
transcription_speaker_diarization:
description: Enables speaker diarization. Applies to `google` engine only.
type: boolean
default: false
example: true
transcription_min_speaker_count:
description: Defines minimum number of speakers in the conversation. Applies to `google` engine only.
type: integer
example: 4
default: 2
format: int32
transcription_max_speaker_count:
description: Defines maximum number of speakers in the conversation. Applies to `google` engine only.
type: integer
example: 4
default: 6
format: int32
example:
format: wav
channels: single
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
play_beep: true
max_length: 0
timeout_secs: 0
transcription: true
transcription_engine: B
transcription_language: en
StartSiprecRequest:
type: object
title: Start Siprec Request
properties:
connector_name:
description: Name of configured SIPREC connector to be used.
type: string
example: my-siprec-connector
sip_transport:
description: Specifies SIP transport protocol.
type: string
enum:
- udp
- tcp
- tls
default: udp
example: tcp
siprec_track:
description: Specifies which track should be sent on siprec session.
type: string
enum:
- inbound_track
- outbound_track
- both_tracks
default: both_tracks
example: outbound_track
include_metadata_custom_headers:
description: When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise,
they’ll be added to sip headers.
example: true
type: boolean
enum:
- true
- false
secure:
description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure
SRS port in your connector to 5061.
example: true
type: boolean
enum:
- true
- false
session_timeout_secs:
description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for
session keep alive. Minimum value is 90, set to 0 to disable.
example: 900
type: integer
default: 1800
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
example:
connector_name: my-siprec-connector
siprec_track: both_tracks
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
StartSpeakingPlan:
type: object
title: StartSpeakingPlan
description: Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non
turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by
the transcription end-of-turn settings under `transcription.settings` instead.
properties:
wait_seconds:
type: number
format: float
default: 0.4
minimum: 0.0
description: Minimum seconds to wait before the assistant starts speaking.
transcription_endpointing_plan:
$ref: '#/components/schemas/TranscriptionEndpointingPlan'
StartStreamingRequest:
type: object
title: Start Streaming Request
properties:
stream_url:
description: The destination WebSocket address where the stream is going to be delivered.
type: string
example: wss://www.example.com/websocket
stream_track:
description: Specifies which track should be streamed.
type: string
enum:
- inbound_track
- outbound_track
- both_tracks
default: inbound_track
example: both_tracks
stream_codec:
$ref: '#/components/schemas/StreamCodec'
stream_bidirectional_mode:
$ref: '#/components/schemas/StreamBidirectionalMode'
stream_bidirectional_codec:
$ref: '#/components/schemas/StreamBidirectionalCodec'
stream_bidirectional_target_legs:
$ref: '#/components/schemas/StreamBidirectionalTargetLegs'
stream_bidirectional_sampling_rate:
$ref: '#/components/schemas/StreamBidirectionalSamplingRate'
enable_dialogflow:
description: Enables Dialogflow for the current call. The default value is false.
type: boolean
default: false
example: true
dialogflow_config:
$ref: '#/components/schemas/DialogflowConfig'
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
custom_parameters:
description: Custom parameters to be sent as part of the WebSocket connection.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom parameter.
value:
type: string
description: The value of the custom parameter.
example:
- name: param1
value: value1
- name: param2
value: value2
stream_auth_token:
description: An authentication token to be sent as part of the WebSocket connection. Maximum length is 4000 characters.
type: string
maxLength: 4000
example: your-auth-token
example:
stream_url: wss://www.example.com/websocket
stream_track: both_tracks
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
enable_dialogflow: false
dialogflow_config:
analyze_sentiment: false
partial_automated_agent_reply: false
Status:
type: string
enum:
- active
- expired
- removed
StepStatus:
type: string
enum:
- pending
- in_progress
- completed
- skipped
- failed
title: StepStatus
StockExchange:
title: StockExchange
enum:
- NONE
- NASDAQ
- NYSE
- AMEX
- AMX
- ASX
- B3
- BME
- BSE
- FRA
- ICEX
- JPX
- JSE
- KRX
- LON
- NSE
- OMX
- SEHK
- SSE
- STO
- SWX
- SZSE
- TSX
- TWSE
- VSE
description: (Required for public company) stock exchange.
example: NASDAQ
type: string
StockSymbolBrandIdentifier:
type: object
additionalProperties: false
properties:
identifier_type:
const: STOCK_SYMBOL
value:
type: string
minLength: 1
maxLength: 255
pattern: ^\S+:\S+$
description: A stock symbol using EXCHANGE:SYMBOL.
required:
- identifier_type
- value
StopForkingRequest:
type: object
title: Stop Forking Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
stream_type:
description: Optionally specify a `stream_type`. This should match the `stream_type` that was used in `fork_start`
command to properly stop the fork.
type: string
enum:
- raw
- decrypted
default: raw
example: decrypted
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
StopGatherRequest:
type: object
title: Stop Gather Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
StopRecordingConferenceRequest:
type: object
title: Stop Recording Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id:
description: Uniquely identifies the resource.
type: string
format: uuid
example: 6e00ab49-9487-4364-8ad6-23965965afb2
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id: 6e00ab49-9487-4364-8ad6-23965965afb2
StopRecordingRequest:
type: object
title: Stop Recording Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id:
description: Uniquely identifies the resource.
type: string
format: uuid
example: 6e00ab49-9487-4364-8ad6-23965965afb2
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
recording_id: 6e00ab49-9487-4364-8ad6-23965965afb2
StopSiprecRequest:
type: object
title: Stop Siprec Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
StopStreamingRequest:
type: object
title: Stop Streaming Request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
stream_id:
type: string
format: uuid
example: 1edb94f9-7ef0-4150-b502-e0ebadfd9491
description: Identifies the stream. If the `stream_id` is not provided the command stops all streams associated
with a given `call_control_id`.
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491
StoreMedia:
description: Should fax media be stored on temporary URL. It does not support media_name, they can't be submitted together.
type: boolean
default: false
StorePreview:
description: Should fax preview be stored on temporary URL.
type: boolean
default: false
StoredPaymentTransactionRequest:
type: object
required:
- amount
properties:
amount:
type: string
description: Amount in dollars and cents, e.g. "120.00"
example: '120.00'
StoredPaymentTransactionResponse:
type: object
properties:
data:
type: object
properties:
id:
type: string
record_type:
type: string
enum:
- transaction
amount_cents:
type: integer
processor_status:
type: string
amount_currency:
type: string
created_at:
type: string
format: date-time
auto_recharge:
type: boolean
transaction_processing_type:
type: string
enum:
- stored_payment
StreamBidirectionalCodec:
type: string
title: Bidirectional Stream Codec
description: Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp.
Case sensitive.
enum:
- PCMU
- PCMA
- G722
- OPUS
- AMR-WB
- L16
default: PCMU
example: G722
StreamBidirectionalMode:
type: string
title: Bidirectional Stream Mode
description: Configures method of bidirectional streaming (mp3, rtp).
enum:
- mp3
- rtp
default: mp3
example: rtp
StreamBidirectionalSamplingRate:
type: integer
title: Bidirectional Stream Sampling Rate
description: Audio sampling rate.
enum:
- 8000
- 16000
- 22050
- 24000
- 48000
default: 8000
example: 16000
StreamBidirectionalTargetLegs:
type: string
title: Bidirectional Stream Target Legs
description: Specifies which call legs should receive the bidirectional stream audio.
enum:
- both
- self
- opposite
default: opposite
example: both
StreamCodec:
description: Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not
possible, the codec from the call will be used.
title: Stream Codec
type: string
enum:
- PCMU
- PCMA
- G722
- OPUS
- AMR-WB
- L16
- default
default: default
example: PCMA
StreamName:
description: The user specified name of Stream.
example: My stream
type: string
StreamStatus:
description: The status of the Stream you wish to update.
default: stopped
example: stopped
type: string
enum:
- stopped
StreamTrack:
description: Tracks to be included in the stream
default: inbound_track
example: both_tracks
type: string
enum:
- inbound_track
- outbound_track
- both_tracks
StringLiteralExpression:
description: Constant string value.
example:
type: string_literal
value: gold
properties:
type:
const: string_literal
title: Type
type: string
value:
description: Literal string value.
example: gold
title: Value
type: string
required:
- type
- value
title: StringLiteralExpression
type: object
SttClientEvent:
type: string
format: binary
description: Binary audio data in mp3, wav, linear16, or linear32 format, per `input_format`.
SttDeleteDetailReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/SttDetailReportResponse'
SttDetailReportResponse:
type: object
properties:
id:
type: string
description: Identifies the resource
example: ab76c3b6-80cd-11eb-9439-0242ac130002
created_at:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
start_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
end_date:
type: string
format: date-time
example: '2020-07-01T00:00:00-06:00'
download_link:
type: string
description: URL to download the report
example: https://portal-cdrs-usage.s3.amazonaws.com
status:
type: string
enum:
- PENDING
- COMPLETE
- FAILED
- EXPIRED
record_type:
type: string
example: speech_to_text_report
SttDetailedRequest:
required:
- start_date
- end_date
type: object
properties:
start_date:
type: string
description: Start date in ISO format with timezone
format: date-time
example: '2020-07-01T00:00:00-06:00'
end_date:
type: string
description: End date in ISO format with timezone (date range must be up to one month)
format: date-time
example: '2020-07-01T00:00:00-06:00'
description: Request object for Speech to Text detailed report
SttErrorFrame:
type: object
description: Server-to-client frame indicating an error during transcription. The connection may be closed shortly after.
properties:
type:
type: string
const: error
description: Frame type identifier.
error:
type: string
description: Error message describing what went wrong.
required:
- type
- error
SttGetDetailReportByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/SttDetailReportResponse'
SttGetDetailReportResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SttDetailReportResponse'
SttPostDetailReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/SttDetailReportResponse'
SttServerEvent:
description: Union of all server-to-client WebSocket events for STT streaming.
oneOf:
- $ref: '#/components/schemas/TranscriptFrame'
- $ref: '#/components/schemas/SttErrorFrame'
discriminator:
propertyName: type
mapping:
transcript: '#/components/schemas/TranscriptFrame'
error: '#/components/schemas/SttErrorFrame'
SttUsageReportResponse:
type: object
properties:
data:
type: object
SubNumberOrder:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
order_request_id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c293
readOnly: true
country_code:
type: string
example: US
readOnly: true
phone_number_type:
type: string
example: local
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
user_id:
type: string
format: uuid
example: d70873cd-7c98-401a-81b6-b1ae08246995
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/SubNumberOrderRegulatoryRequirement'
record_type:
type: string
example: sub_number_order
readOnly: true
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 1
readOnly: true
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
readOnly: true
status:
type: string
enum:
- pending
- success
- failure
description: The status of the order.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
is_block_sub_number_order:
type: boolean
description: True if the sub number order is a block sub number order
example: false
readOnly: true
type: object
SubNumberOrderPhoneNumber:
type: object
properties:
id:
type: string
format: uuid
phone_number:
type: string
country_code:
type: string
phone_number_type:
type: string
requirements_met:
type: boolean
requirements_status:
type: string
status:
type: string
record_type:
type: string
bundle_id:
type:
- string
- 'null'
format: uuid
regulatory_requirements:
type: array
items:
type: object
properties:
requirement_id:
type: string
format: uuid
field_type:
type: string
field_value:
type: string
status:
type: string
SubNumberOrderRegulatoryRequirement:
properties:
record_type:
type: string
example: phone_number_regulatory_requirement
readOnly: true
requirement_id:
type: string
format: uuid
description: Unique id for a requirement.
example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_type:
type: string
enum:
- textual
- datetime
- address
- document
example: address
readOnly: true
type: object
SubNumberOrderRegulatoryRequirementWithValue:
properties:
record_type:
type: string
example: phone_number_regulatory_requirement
readOnly: true
requirement_id:
type: string
format: uuid
description: Unique id for a requirement.
example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_type:
type: string
enum:
- textual
- datetime
- address
- document
example: address
readOnly: true
field_value:
type: string
description: The value of the requirement, this could be an id to a resource or a string value.
example: 45f45a04-b4be-4592-95b1-9306b9db2b21
type: object
SubNumberOrderRequirementGroupResponse:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
order_request_id:
type: string
format: uuid
country_code:
type: string
phone_number_type:
type: string
phone_numbers_count:
type: integer
requirements_met:
type: boolean
is_block_sub_number_order:
type: boolean
status:
type: string
customer_reference:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
record_type:
type: string
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/RegulatoryRequirement'
phone_numbers:
type: array
items:
$ref: '#/components/schemas/SubNumberOrderPhoneNumber'
example:
data:
country_code: AT
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
regulatory_requirements:
- record_type: phone_number_regulatory_requirement
requirement_id: 2708e569-696a-4fc7-9305-5fdb3eb9c7dd
field_type: textual
phone_numbers_count: 1
phone_numbers:
- country_code: AT
regulatory_requirements:
- field_value: '4804570924'
requirement_id: 2708e569-696a-4fc7-9305-5fdb3eb9c7dd
field_type: textual
status: pending-approval
bundle_id: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
requirements_status: requirement-info-under-review
phone_number_type: toll_free
requirements_met: false
record_type: number_order_phone_number
status: pending
id: 613d517a-0432-4bae-a785-c11033bd0985
phone_number: '+43800300238'
is_block_sub_number_order: false
phone_number_type: toll_free
requirements_met: false
id: f826ed66-b27c-4340-9dc0-57dc3459f1bd
order_request_id: a11d58fe-88a4-494a-b752-8dea411993c6
status: pending
customer_reference: missing
record_type: sub_number_order
SubNumberOrdersReport:
type: object
properties:
id:
type: string
format: uuid
example: cada7e84-122b-4b47-bc66-58c7c3becd40
description: Identifies the resource.
readOnly: true
order_type:
type: string
example: sub_number_order
description: The type of order report.
readOnly: true
filters:
type: object
description: The filters that were applied to generate this report
properties:
status:
type: string
example: success
country_code:
type: string
example: US
created_at_gt:
type: string
format: date-time
example: '2023-04-05T10:22:08.230549Z'
created_at_lt:
type: string
format: date-time
example: '2025-06-05T10:22:08.230549Z'
order_request_id:
type: string
format: uuid
example: 991b8ff5-4daf-4826-9a22-e3991b444a9c
customer_reference:
type: string
example: STRING
status:
type: string
enum:
- pending
- success
- failed
- expired
default: pending
example: pending
description: Indicates the completion level of the sub number orders report. The report must have a status of 'success'
before it can be downloaded.
user_id:
type: string
format: uuid
example: 0d7ef697-df19-413a-b724-56b0539f5397
description: The ID of the user who created the report.
readOnly: true
created_at:
type: string
format: date-time
example: '2025-06-11T13:21:40.967339+00:00'
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
format: date-time
example: '2025-06-11T13:21:45.753260+00:00'
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
example:
order_type: sub_number_order
filters:
status: success
country_code: US
created_at_gt: '2023-04-05T10:22:08.230549Z'
created_at_lt: '2025-06-05T10:22:08.230549Z'
order_request_id: 991b8ff5-4daf-4826-9a22-e3991b444a9c
customer_reference: STRING
status: pending
created_at: '2025-06-11T13:21:40.967339+00:00'
user_id: 0d7ef697-df19-413a-b724-56b0539f5397
updated_at: '2025-06-11T13:21:45.753260+00:00'
id: cada7e84-122b-4b47-bc66-58c7c3becd40
SuccessResponse:
type: object
description: Status envelope used by the signup and magic-link flows.
required:
- success
- message
properties:
success:
type: boolean
description: Whether the request was accepted.
example: true
message:
type: string
description: Human-readable status message.
example: A one-time sign-in link has been sent to your email address.
Summary:
type: object
properties:
lines:
type: array
items:
$ref: '#/components/schemas/SummaryLine'
description: List of charge summary lines
adjustments:
type: array
items:
$ref: '#/components/schemas/AdjustmentLine'
description: List of billing adjustments
example:
lines:
- type: comparative
name: Local DIDs
alias: local
new_this_month:
quantity: 10
mrc: '25.50'
otc: '5.00'
existing_this_month:
quantity: 8
mrc: '20.00'
- type: simple
name: Port Out
alias: port_out
quantity: 100
amount: '15.75'
adjustments:
- amount: '-10.00'
description: Credit for service outage
event_date: '2025-05-15'
required:
- lines
- adjustments
SummaryAndTotal:
type: object
properties:
user_id:
type: string
description: User identifier
example: 0db0b4aa-a83d-4d4f-ad9b-3ba7c1ac2ce8
start_date:
type: string
format: date
description: Start date of the summary period
example: '2025-05-01'
end_date:
type: string
format: date
description: End date of the summary period
example: '2025-06-01'
user_email:
type: string
format: email
description: User email address
example: user@example.com
currency:
type: string
description: Currency code
example: USD
summary:
$ref: '#/components/schemas/Summary'
total:
$ref: '#/components/schemas/TotalSummary'
required:
- user_id
- start_date
- end_date
- user_email
- currency
- summary
- total
SummaryLine:
oneOf:
- $ref: '#/components/schemas/ComparativeLine'
- $ref: '#/components/schemas/SimpleLine'
discriminator:
propertyName: type
SummaryRequest:
properties:
bucket:
type: string
description: The name of the bucket that contains the file to be summarized.
filename:
type: string
description: The name of the file to be summarized.
system_prompt:
type: string
description: A system prompt to guide the summary generation.
type: object
required:
- bucket
- filename
title: SummaryRequest
SummaryResponse:
properties:
data:
$ref: '#/components/schemas/ProfileSummary'
type: object
required:
- data
title: SummaryResponse
SummaryResponseData:
properties:
data:
$ref: '#/components/schemas/inference-embedding_SummaryResponse'
type: object
required:
- data
title: SummaryResponseData
SummarySettings:
properties:
instructions:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Instructions
description: 'Free-form instructions that influence how this namespace''s summaries are written, shared by every
profile in the namespace. How you use them is up to you -- they steer the outcome, so try a phrasing and see how
the summary comes out. Advisory: they steer the summary but never override or deny a profile''s own facts, and
they do not affect recall. Null or empty means none are set, and summaries use the neutral default. A change reaches
each summary the next time it is regenerated.'
type: object
title: SummarySettings
description: A namespace's summary settings, shared by every profile in it.
SummarySettingsPatch:
properties:
instructions:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Instructions
description: Replace the namespace's summary instructions. Null or empty clears them and returns to the neutral
default. Omit the field to leave the current instructions unchanged.
type: object
title: SummarySettingsPatch
description: 'A partial update to a namespace''s summary settings.
Only the fields present in the request are changed; the rest are left as
they are. Sending `instructions: null` (or empty) clears the instructions.'
SupportedEmbeddingLoaders:
type: string
enum:
- default
- intercom
title: SupportedEmbeddingLoaders
description: Supported types of custom document loaders for embeddings.
SupportedEmbeddingModels:
type: string
enum:
- thenlper/gte-large
- intfloat/multilingual-e5-large
title: SupportedEmbeddingModels
description: Supported models to vectorize and embed documents.
SuppressedRecipient:
type: object
properties:
to:
type: string
format: email
description: Suppressed recipient email address.
reason:
type: string
description: Suppression reason returned by the recipient suppression service.
scope:
type: string
description: Scope at which the suppression applies.
override_allowed:
type: boolean
description: Whether an authorized send may override this suppression.
required:
- to
- reason
- scope
- override_allowed
SwitchSupervisorRoleRequest:
type: object
title: Switch Supervisor Role Request
required:
- role
properties:
role:
description: The supervisor role to switch to. 'barge' allows speaking to both parties, 'whisper' allows speaking
to caller only, 'monitor' allows listening only.
type: string
enum:
- barge
- whisper
- monitor
example: barge
example:
role: barge
SystemMessage:
type: object
title: System Message
description: Developer-provided instructions that the model should follow, regardless of messages sent by the user.
properties:
role:
description: The role of the messages author, in this case `system`.
type: string
enum:
- system
content:
description: The contents of the system message.
type: string
metadata:
$ref: '#/components/schemas/MessageMetadata'
required:
- role
- content
example:
role: system
content: Get the user's favorite color
T38Enabled:
description: The flag to disable the T.38 protocol.
type: boolean
default: true
TFPhoneNumber:
title: PhoneNumber
required:
- phoneNumber
type: object
properties:
phoneNumber:
title: Phonenumber
type: string
description: A phone number
TFVerificationRequest:
title: VerificationRequest
required:
- businessName
- corporateWebsite
- businessAddr1
- businessCity
- businessState
- businessZip
- businessContactFirstName
- businessContactLastName
- businessContactEmail
- businessContactPhone
- messageVolume
- phoneNumbers
- useCase
- useCaseSummary
- productionMessageContent
- optInWorkflow
- optInWorkflowImageURLs
- additionalInformation
type: object
properties:
businessName:
title: Businessname
type: string
maxLength: 500
description: Name of the business; there are no specific formatting requirements
example: Telnyx LLC
corporateWebsite:
title: Corporatewebsite
type: string
maxLength: 500
description: A URL, including the scheme, pointing to the corporate website
example: http://example.com
businessAddr1:
title: Businessaddr1
type: string
maxLength: 500
description: Line 1 of the business address
example: 600 Congress Avenue
businessAddr2:
title: Businessaddr2
type: string
maxLength: 500
description: Line 2 of the business address
example: 14th Floor
businessCity:
title: Businesscity
type: string
maxLength: 500
description: The city of the business address; the first letter should be capitalized
example: Austin
businessState:
title: Businessstate
type: string
maxLength: 500
description: The full name of the state (not the 2 letter code) of the business address; the first letter should
be capitalized
example: Texas
businessZip:
title: Businesszip
type: string
maxLength: 500
description: The ZIP code of the business address
example: '78701'
businessContactFirstName:
title: Businesscontactfirstname
type: string
maxLength: 500
description: First name of the business contact; there are no specific requirements on formatting
example: John
businessContactLastName:
title: Businesscontactlastname
type: string
maxLength: 500
description: Last name of the business contact; there are no specific requirements on formatting
example: Doe
businessContactEmail:
title: Businesscontactemail
type: string
maxLength: 500
description: The email address of the business contact
example: email@example.com
businessContactPhone:
title: Businesscontactphone
type: string
maxLength: 500
description: The phone number of the business contact in E.164 format
example: '+18005550100'
messageVolume:
allOf:
- $ref: '#/components/schemas/Volume'
description: Estimated monthly volume of messages from the given phone numbers
example: 100,000
phoneNumbers:
title: Phonenumbers
type: array
minItems: 1
items:
$ref: '#/components/schemas/TFPhoneNumber'
description: The phone numbers to request the verification of
example:
- phoneNumber: '+18773554398'
- phoneNumber: '+18773554399'
useCase:
allOf:
- $ref: '#/components/schemas/UseCaseCategories'
description: Machine-readable use-case for the phone numbers
example: 2FA
useCaseSummary:
title: Usecasesummary
type: string
maxLength: 500
description: Human-readable summary of the desired use-case
example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to
sign into the portal
productionMessageContent:
title: Productionmessagecontent
type: string
maxLength: 1000
description: An example of a message that will be sent from the given phone numbers
example: Your Telnyx OTP is XXXX
optInWorkflow:
title: Optinworkflow
type: string
maxLength: 500
description: Human-readable description of how end users will opt into receiving messages from the given phone numbers
example: User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA
verification for security purposes. If they've opted in a confirmation message is sent out to the handset
optInWorkflowImageURLs:
title: Optinworkflowimageurls
minItems: 1
type: array
items:
$ref: '#/components/schemas/Url'
description: Images showing the opt-in workflow
example:
- url: https://telnyx.com/sign-up
- url: https://telnyx.com/company/data-privacy
additionalInformation:
title: Additionalinformation
type: string
maxLength: 500
description: Any additional information
isvReseller:
title: Isvreseller
type:
- string
- 'null'
maxLength: 500
description: ISV name
webhookUrl:
title: Webhookurl
type: string
maxLength: 500
description: URL that should receive webhooks relating to this verification request
example: http://example-webhook.com
businessRegistrationNumber:
title: Businessregistrationnumber
type:
- string
- 'null'
maxLength: 500
description: Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required
from January 2026.
example: 12-3456789
businessRegistrationType:
title: Businessregistrationtype
type:
- string
- 'null'
maxLength: 500
description: Type of business registration being provided. Required from January 2026.
example: EIN
businessRegistrationCountry:
title: Businessregistrationcountry
type:
- string
- 'null'
maxLength: 2
pattern: ^[A-Z]{2}$
description: ISO 3166-1 alpha-2 country code of the issuing business authority. Must be exactly 2 letters. Automatically
converted to uppercase. Required from January 2026.
example: US
doingBusinessAs:
title: Doingbusinessas
type:
- string
- 'null'
maxLength: 500
description: Doing Business As (DBA) name if different from legal name
example: Acme Services
entityType:
anyOf:
- $ref: '#/components/schemas/toll-free-verification_EntityType'
- type: 'null'
description: Business entity classification. Must be one of the 5 valid enum values.
optInConfirmationResponse:
title: Optinconfirmationresponse
type:
- string
- 'null'
maxLength: 500
description: Message sent to users confirming their opt-in to receive messages
example: You have successfully opted in to receive messages from Acme Corp
helpMessageResponse:
title: Helpmessageresponse
type:
- string
- 'null'
maxLength: 500
description: The message returned when users text 'HELP'
example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com'
privacyPolicyURL:
title: Privacypolicyurl
type:
- string
- 'null'
maxLength: 500
description: URL pointing to the business's privacy policy. Plain string, no URL format validation.
example: https://example.com/privacy
termsAndConditionURL:
title: Termsandconditionurl
type:
- string
- 'null'
maxLength: 500
description: URL pointing to the business's terms and conditions. Plain string, no URL format validation.
example: https://example.com/terms
ageGatedContent:
title: Agegatedcontent
type: boolean
default: false
description: Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided.
optInKeywords:
title: Optinkeywords
type:
- string
- 'null'
maxLength: 500
description: Keywords used to collect and process consumer opt-ins
example: START, YES, SUBSCRIBE
campaignVerifyAuthorizationToken:
title: Campaignverifyauthorizationtoken
type:
- string
- 'null'
maxLength: 500
description: Campaign Verify Authorization Token required for Political use case submissions starting February 17,
2026. This token is validated by Zipwhip and must be provided for all Political use case verifications after the
deadline.
example: cv_token_abc123xyz
description: The body of a tollfree verification request
TFVerificationStatus:
title: VerificationStatus
enum:
- Verified
- Rejected
- Waiting For Vendor
- Waiting For Customer
- Waiting For Telnyx
- In Progress
type: string
description: Tollfree verification status
TagsResponse:
properties:
tags:
items:
type: string
type: array
title: Tags
type: object
required:
- tags
title: TagsResponse
TailscaleSubnetRouter:
type: object
title: TailscaleSubnetRouter
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: tailscale_subnet_router
name:
type: string
minLength: 1
maxLength: 128
description: A user specified name for the router.
example: tailnet-ashburn
network_id:
type: string
format: uuid
description: The id of the Network the router is attached to.
example: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code:
type: string
description: The code of the region the router is created in. `GET /network_coverage` lists the regions whose `available_services`
include `tailscale_subnet_router`.
example: ashburn-va
advertised_routes:
type: array
minItems: 1
maxItems: 64
uniqueItems: true
items:
type: string
example: 172.27.0.0/24
example:
- 172.27.0.0/24
description: IPv4 subnets of the Network that the router advertises to the tailnet. Each entry is a canonical CIDR
that the Network routes. Default, loopback, link-local, multicast, and Tailscale (`100.64.0.0/10`) ranges are
rejected. So are ranges that overlap the router's own, `172.27.254.0/24` and `198.18.0.0/20`.
status:
type: string
enum:
- provisioning
- provisioned
- failed
- deleting
readOnly: true
example: provisioned
description: '`provisioning`: Telnyx is creating the router or applying a change. `provisioned`: the router is on
the tailnet and advertises its routes; the tailnet still approves them. `failed`: enrollment did not complete,
and `PATCH` retries it. `deleting`: the router is being removed.'
customer_address:
type: string
readOnly: true
example: 172.27.254.1
description: The router's address on the Network, from `172.27.254.0/24`. Tailnet traffic enters the Network from
this address.
device_id:
type:
- string
- 'null'
readOnly: true
example: n5c6f0a7e1CNTRL
description: The router's node id on the tailnet. Set once the router has enrolled.
tailnet_name:
type:
- string
- 'null'
readOnly: true
example: acme.example
description: The name of the tailnet the router is enrolled in. Set once the router has enrolled.
tailscale_ips:
type: array
readOnly: true
items:
type: string
example:
- 100.101.2.30
- fd7a:115c:a1e0::2a
description: The router's addresses on the tailnet. Empty until the router has enrolled.
created_at:
type: string
format: date-time
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2026-10-13T15:04:05.123456Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2026-10-13T15:09:41.654321Z'
TailscaleSubnetRouterCreate:
type: object
title: TailscaleSubnetRouterCreate
additionalProperties: false
required:
- name
- network_id
- region_code
- advertised_routes
- auth_key
properties:
name:
type: string
minLength: 1
maxLength: 128
description: A user specified name for the router.
example: tailnet-ashburn
network_id:
type: string
format: uuid
description: The id of the Network to attach the router to.
example: 0de011ae-ee53-4df4-ba96-754728eb5aad
region_code:
type: string
description: The code of the region to create the router in. `GET /network_coverage` lists the regions whose `available_services`
include `tailscale_subnet_router`.
example: ashburn-va
advertised_routes:
type: array
minItems: 1
maxItems: 64
uniqueItems: true
items:
type: string
example: 172.27.0.0/24
example:
- 172.27.0.0/24
description: IPv4 subnets of the Network that the router advertises to the tailnet. Each entry is a canonical CIDR
that the Network routes. Default, loopback, link-local, multicast, and Tailscale (`100.64.0.0/10`) ranges are
rejected. So are ranges that overlap the router's own, `172.27.254.0/24` and `198.18.0.0/20`.
auth_key:
type: string
writeOnly: true
format: password
pattern: ^tskey-auth-[A-Za-z0-9_-]{10,250}$
description: 'A Tailscale auth key that enrolls the router in the user''s tailnet: reusable, pre-approved, tagged,
and not ephemeral. Telnyx stores it encrypted until enrollment succeeds, then discards it. It is never returned.'
example: tskey-auth-k1AbCdEfGh2IjKlMnOpQrStUv
TailscaleSubnetRouterUpdate:
type: object
title: TailscaleSubnetRouterUpdate
additionalProperties: false
description: Every field is optional. A change queues a new provisioning run and returns the router with `status` `provisioning`.
An empty object retries a `failed` router.
properties:
name:
type: string
minLength: 1
maxLength: 128
description: A user specified name for the router.
example: tailnet-ashburn
advertised_routes:
type: array
minItems: 1
maxItems: 64
uniqueItems: true
items:
type: string
example: 172.27.0.0/24
example:
- 172.27.0.0/24
description: IPv4 subnets of the Network that the router advertises to the tailnet. Each entry is a canonical CIDR
that the Network routes. Default, loopback, link-local, multicast, and Tailscale (`100.64.0.0/10`) ranges are
rejected. So are ranges that overlap the router's own, `172.27.254.0/24` and `198.18.0.0/20`.
auth_key:
type: string
writeOnly: true
format: password
pattern: ^tskey-auth-[A-Za-z0-9_-]{10,250}$
description: A replacement Tailscale auth key. Accepted only while the router has never enrolled, for example after
a `failed` enrollment. Never returned.
example: tskey-auth-k1AbCdEfGh2IjKlMnOpQrStUv
TaskStatus:
type: string
enum:
- pending
- starting
- running
- completed
- failed
title: TaskStatus
TaskStatusResponse:
properties:
data:
type: object
properties:
task_id:
type: string
format: uuid
title: Task ID
task_name:
type: string
title: Task Name
status:
$ref: '#/components/schemas/BackgroundTaskStatus'
created_at:
type: string
title: Created At
finished_at:
type: string
title: Finished At
type: object
required:
- data
title: TaskStatusResponse
TelcoDataAggregation:
type: object
properties:
type:
type: string
description: Type of telco data lookup
example: CNAM
total_dips:
type: integer
description: Total number of lookups performed
example: 3
total_cost:
type: number
description: Total cost for this aggregation
example: 0.009
currency:
type: string
description: Currency code
example: USD
TelcoDataGetUsageReportByIdResponse:
type: object
properties:
data:
$ref: '#/components/schemas/TelcoDataUsageReportResponse'
TelcoDataGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TelcoDataUsageReportResponse'
meta:
$ref: '#/components/schemas/standard_PaginationMeta'
TelcoDataPostUsageReportResponse:
type: object
properties:
data:
$ref: '#/components/schemas/TelcoDataUsageReportResponse'
TelcoDataUsageRecord:
type: object
properties:
user_id:
type: string
format: uuid
description: User ID
example: d37bdd47-f301-42ec-b2ad-5a0465bfb632
aggregations:
type: array
description: List of aggregations by lookup type
items:
$ref: '#/components/schemas/TelcoDataAggregation'
record_type:
type: string
description: Record type identifier
example: TelcoDataUsageRecord
TelcoDataUsageReportResponse:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the report
example: 9783f4d7-0bfc-427a-9d6b-bc659ad16e5b
start_date:
type: string
format: date
description: Start date of the report period
example: '2025-11-01'
end_date:
type: string
format: date
description: End date of the report period
example: '2025-12-01'
aggregation_type:
type: string
description: Type of aggregation used in the report
example: ALL
status:
type: string
description: Current status of the report
example: COMPLETE
report_url:
type: string
description: URL to download the complete report
example: https://portal-cdrs-usage.s3.amazonaws.com/telco_data_usage_report_2025-12-02.csv
created_at:
type: string
format: date-time
description: Timestamp when the report was created
example: '2025-12-02T20:20:57.196925Z'
updated_at:
type: string
format: date-time
description: Timestamp when the report was last updated
example: '2025-12-02T20:21:08.237091Z'
managed_accounts:
type: array
description: List of managed account IDs included in the report
items:
type: string
example: []
result:
type: array
description: Array of usage records
items:
$ref: '#/components/schemas/TelcoDataUsageRecord'
record_type:
type: string
description: Record type identifier
example: TelcoDataUsageReport
description: Telco data usage report response
TelcoDataUsageRequest:
type: object
properties:
startDate:
type: string
format: date
description: Start date for the usage report
example: '2025-02-10'
endDate:
type: string
format: date
description: End date for the usage report
example: '2025-02-10'
aggregationType:
type: string
description: Type of aggregation for the report
enum:
- ALL
- BY_ORGANIZATION_MEMBER
example: ALL
managedAccounts:
type: array
description: List of managed accounts to include in the report
items:
type: string
example:
- f47ac10b-58cc-4372-a567-0e02b2c3d479
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
TelephonyCredential:
type: object
title: On-demand Credential
properties:
id:
type: string
description: Identifies the resource.
example: c215ade3-0d39-418e-94be-c5f780760199
record_type:
type: string
description: Identifies the type of the resource.
example: credential
name:
type: string
resource_id:
type: string
description: Identifies the resource this credential is associated with.
example: connection:1234567890
expired:
type: boolean
description: Defaults to false
sip_username:
type: string
description: The randomly generated SIP username for the credential.
example: gencrednCvHU5IYpSBPPsXI2iQsDX
sip_password:
type: string
description: The randomly generated SIP password for the credential.
example: a92dbcfb60184a8cb330b0acb2f7617b
created_at:
type: string
description: ISO-8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
user_id:
type: string
description: Identifies the user this credential is associated with.
example: user-id
updated_at:
type: string
description: ISO-8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
expires_at:
type: string
description: ISO-8601 formatted date indicating when the resource will expire.
example: '2018-02-02T22:25:27.521Z'
example:
id: c215ade3-0d39-418e-94be-c5f780760199
record_type: credential
name: '2020-06-18 21:32:38.917732Z'
expired: false
user_id: user-id
resource_id: connection:804252963366242252
sip_password: a92dbcfb60184a8cb330b0acb2f7617b
sip_username: gencrednCvHU5IYpSBPPsXI2iQsDX
created_at: '2020-06-18T21:32:38'
expires_at: '2042-06-18T21:32:38'
updated_at: '2020-06-18T21:32:38.000Z'
TelephonyCredentialCreateRequest:
type: object
title: TelephonyCredentialCreateRequest
required:
- connection_id
properties:
name:
type: string
tag:
type: string
description: Tags a credential. A single tag can hold at maximum 1000 credentials.
example: some_tag
connection_id:
type: string
description: Identifies the Credential Connection this credential is associated with.
example: '1234567890'
expires_at:
type: string
description: ISO-8601 formatted date indicating when the credential will expire.
example: '2018-02-02T22:25:27.521Z'
example:
name: My-new-credential
connection_id: '1234567890'
TelephonyCredentialUpdateRequest:
type: object
title: TelephonyCredentialUpdateRequest
properties:
name:
type: string
tag:
type: string
description: Tags a credential. A single tag can hold at maximum 1000 credentials.
example: some_tag
connection_id:
type: string
description: Identifies the Credential Connection this credential is associated with.
example: '987654321'
expires_at:
type: string
description: ISO-8601 formatted date indicating when the credential will expire.
example: '2018-02-02T22:25:27.521Z'
example:
name: My-new-updated-credential
connection_id: '987654321'
TelephonySettings:
properties:
default_texml_app_id:
type: string
description: Default Texml App used for voice calls with your assistant. This will be created automatically on assistant
creation.
supports_unauthenticated_web_calls:
type: boolean
description: When enabled, allows users to interact with your AI assistant directly from your website without requiring
authentication. This is required for FE widgets that work with assistants that have telephony enabled.
noise_suppression:
type: string
enum:
- aicoustics
- krisp
- deepfilternet
- disabled
description: The noise suppression engine to use. 'aicoustics' is STT-optimized and recommended for AI assistants
(configure through noise_suppression_config). Use 'disabled' to turn off noise suppression.
noise_suppression_config:
type: object
description: 'Configuration for noise suppression. Applicable fields depend on the engine: ''attenuation_limit''
and ''mode'' only when noise_suppression is ''deepfilternet''; ''family'', ''size'' and ''enhancement_level''
only when noise_suppression is ''aicoustics''.'
properties:
attenuation_limit:
type: integer
minimum: 0
maximum: 100
default: 100
description: 'Attenuation limit for noise suppression. Range: 0-100. Only applicable when noise_suppression
is ''deepfilternet''.'
mode:
type: string
enum:
- advanced
description: Mode for noise suppression configuration. Only applicable when noise_suppression is 'deepfilternet'.
family:
type: string
enum:
- quail
description: AiCoustics model family optimized for Voice AI and STT. Only applicable when noise_suppression
is 'aicoustics'.
size:
type: string
enum:
- vf
- vf_2_0_l
description: AiCoustics model size. 'vf' tracks the latest model release; 'vf_2_0_l' is pinned to version 2.0
for consistent, predictable behavior. Only applicable when noise_suppression is 'aicoustics'.
enhancement_level:
type: number
minimum: 0
maximum: 1
default: 0.8
description: 'AiCoustics enhancement intensity. Range: 0-1. Only applicable when noise_suppression is ''aicoustics''.'
time_limit_secs:
type: integer
minimum: 30
maximum: 14400
default: 1800
description: Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached
the assistant will be stopped. Stopping the assistant does not itself hang up the call, and what happens next
depends on how the assistant is running. On Call Control (ai_assistant_start) the call leg stays connected and
continues to be billed until it is hung up (for example with the Hangup call command) or until the call ends for
another reason. On TeXML, the assistant's `` instruction ends; in the default TeXML setup
for assistants no instructions follow it, so the call is hung up. Your application receives a call.conversation.ended
webhook when the assistant stops. This limit does not apply to portions of a call without an active assistant
(for instance, a call transferred to a human representative).
user_idle_timeout_secs:
type: integer
minimum: 10
maximum: 14400
description: Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant
will be stopped. Stopping the assistant does not itself hang up the call, and what happens next depends on how
the assistant is running. On Call Control (ai_assistant_start) the call leg stays connected and continues to be
billed until it is hung up (for example with the Hangup call command) or until the call ends for another reason.
On TeXML, the assistant's `` instruction ends; in the default TeXML setup for assistants
no instructions follow it, so the call is hung up. Your application receives a call.conversation.ended webhook
when the assistant stops. This limit does not apply to portions of a call without an active assistant (for instance,
a call transferred to a human representative).
user_idle_reply_secs:
type: integer
minimum: 0
default: 10
description: Duration in seconds of end user silence before the assistant checks in on the user. When this limit
is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops
the assistant entirely.
fallback_destination:
type: string
description: 'Destination number or SIP URI to transfer the caller to when the AI conversation ends abnormally,
for example because of an assistant-side error, so the caller is not left in dead air. This only fires for abnormal
ends: it does not fire when the conversation ends on purpose (the caller hung up, the assistant completed normally,
the caller hung up after a relay handoff, or voicemail was detected), and it does not fire when the assistant
already transferred or bridged the call.'
send_message_history_updates:
type: boolean
description: 'Whether the assistant sends a `call.ai_gather.message_history_updated` webhook with the full message
history every time the conversation history changes. Leave unset to inherit the `send_message_history_updates`
value from the `ai_assistant_start` or `gather_using_ai` command that started the conversation. Setting it here
is authoritative: `true` turns the webhooks on even when the start command did not request them, and `false` turns
them off even when it did. Messages exchanged during a private warm transfer acceptance phase are never included.'
conversation_ended_full_history:
type: boolean
default: false
description: 'When enabled, the `messages` array of the `call.conversation.ended` webhook contains the full conversation
history in order: user and assistant turns, assistant tool calls (`tool_calls`), tool results (`role: tool` with
`tool_call_id`), and informational `system` and `developer` entries. The assistant''s instructions are never included.
When disabled, `messages` contains only user and assistant text turns.'
voicemail_detection:
type: object
description: 'Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These
settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call)
for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.'
properties:
on_voicemail_detected:
type: object
description: Action to take when voicemail is detected.
properties:
action:
type: string
enum:
- stop_assistant
- leave_message_and_stop_assistant
- continue_assistant
description: The action to take when voicemail is detected.
voicemail_message:
type: object
description: Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_assistant'.
properties:
type:
type: string
enum:
- prompt
- message
description: The type of voicemail message. Use 'prompt' to have the assistant generate a message based
on a prompt, or 'message' to leave a specific message.
prompt:
type: string
description: The prompt to use for generating the voicemail message. Only applicable when type is 'prompt'.
message:
type: string
description: The specific message to leave as voicemail. Only applicable when type is 'message'.
disable_dtmf:
type: boolean
default: false
description: Disable inbound DTMF for the entire call. Must be set to true if a 'pay' tool is configured anywhere
on the assistant — on the main tool array or on any workflow node — enforced at write time.
recording_settings:
type: object
description: Configuration for call recording format and channel settings.
properties:
enabled:
type: boolean
default: true
description: Whether call recording is enabled. When set to false, calls will not be recorded regardless of
other recording configuration.
channels:
type: string
enum:
- single
- dual
default: dual
description: The number of channels for the recording. 'single' for mono, 'dual' for stereo.
format:
type: string
enum:
- wav
- mp3
default: mp3
description: The format of the recording file.
stop_on_conversation_end:
type: boolean
default: false
description: When enabled, the call recording will stop when the conversation ends (for example, when the assistant
hangs up or the call is transferred). When disabled, recording continues until the call itself ends.
type: object
title: TelephonySettings
TelnyxAgentData:
properties:
run_id:
type: string
title: Run Id
telnyx_agent_id:
type: string
title: Telnyx Agent Id
created_at:
type: string
format: date-time
title: Created At
type: object
required:
- run_id
- telnyx_agent_id
- created_at
title: TelnyxAgentData
TelnyxAgentResponse:
properties:
data:
$ref: '#/components/schemas/TelnyxAgentData'
type: object
required:
- data
title: TelnyxAgentResponse
TelnyxAgentsListResponse:
properties:
data:
items:
$ref: '#/components/schemas/TelnyxAgentData'
type: array
title: Data
type: object
required:
- data
title: TelnyxAgentsListResponse
TelnyxAvatarSettings:
title: TelnyxAvatarSettings
description: '**Beta:** Configuration for the Telnyx open-source avatar provider. Use a stock avatar or an organization-owned
custom avatar returned by the Avatars API. Discover the available stock catalog with GET /v2/ai/avatars and filter[avatar_type]=stock;
follow meta.total_pages to load every page.'
type: object
additionalProperties: false
properties:
provider:
type: string
const: telnyx
description: Selects the Telnyx open-source avatar provider.
avatar_id:
$ref: '#/components/schemas/AvatarId'
description: The Telnyx stock avatar or organization-owned custom avatar to render.
background_id:
type: string
enum:
- office
- studio
- reception
- illustrated_workspace
description: The background to render.
model:
type: string
enum:
- foxtrot-1
description: Required avatar model identifier, separate from `avatar_id`. The supported value is `foxtrot-1`. Omission,
null, and unsupported model identifiers are rejected.
required:
- provider
- avatar_id
- background_id
- model
example:
provider: telnyx
avatar_id: elena
background_id: office
model: foxtrot-1
TelnyxBayanClone:
type: object
description: Upload-based voice clone using the Telnyx Bayan model (Arabic and English). The clone is `active` on creation.
Use it as voice `Telnyx.Bayan.`.
required:
- audio_file
- name
- gender
- model_id
- ref_text
properties:
audio_file:
type: string
format: binary
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. Converted to 24 kHz
mono WAV and trimmed to the first 10 seconds. For best quality, provide about 10 seconds of clean, single-speaker
speech. Maximum size: 20MB.'
name:
type: string
maxLength: 255
description: Name for the voice clone.
language:
type: string
enum:
- ar
- en
default: ar
description: 'Language of the reference audio: `ar` (Arabic) or `en` (English). Defaults to `ar`. Other values return
`422`.'
gender:
type: string
enum:
- male
- female
- neutral
description: Gender of the voice clone.
ref_text:
type: string
minLength: 1
description: 'Exact transcript of the reference audio. Required for Bayan: a missing, empty, or whitespace-only
value returns `422` with `source.pointer` `/ref_text`. An inaccurate transcript can make synthesis with the clone
truncated or garbled. Record a known script of about 10 seconds and pass it verbatim.'
pattern: \S
label:
type: string
description: Optional custom label describing the voice style.
model_id:
type: string
enum:
- Bayan
description: TTS model identifier. Must be `Bayan`.
provider:
type: string
enum:
- telnyx
- Telnyx
default: telnyx
description: Voice synthesis provider. Defaults to `telnyx`.
TelnyxBrand:
title: TelnyxBrand
required:
- entityType
- displayName
- country
- email
- brandRelationship
- vertical
type: object
properties:
entityType:
allOf:
- $ref: '#/components/schemas/EntityType'
description: Entity type behind the brand. This is the form of business establishment.
cspId:
title: Cspid
type: string
description: Unique identifier assigned to the csp by the registry.
brandId:
title: Brandid
type: string
description: Unique identifier assigned to the brand.
example: 4b20017f-8da9-a992-a6c0-683072fb7729
tcrBrandId:
title: TcrBrandid
type: string
description: Unique identifier assigned to the brand by the registry.
example: BBRAND1
displayName:
title: Displayname
maxLength: 100
type: string
description: Display or marketing name of the brand.
example: ABC Mobile
companyName:
title: Companyname
maxLength: 100
type: string
description: (Required for Non-profit/private/public) Legal company name.
example: ABC Inc.
firstName:
title: Firstname
maxLength: 100
type: string
description: First name of business contact.
example: John
lastName:
title: Lastname
maxLength: 100
type: string
description: Last name of business contact.
example: Smith
ein:
title: Ein
maxLength: 20
type: string
description: (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.
example: '111111111'
phone:
title: Phone
maxLength: 20
type: string
description: Valid phone number in e.164 international format.
example: '+12024567890'
street:
title: Street
maxLength: 100
type: string
description: Street number and name.
example: '123'
city:
title: City
maxLength: 100
type: string
description: City name
example: New York
state:
title: State
maxLength: 20
type: string
description: State. Must be 2 letters code for United States.
example: NY
postalCode:
title: Postalcode
maxLength: 10
type: string
description: Postal codes. Use 5 digit zipcode for United States
example: '10001'
country:
title: Country
maxLength: 2
type: string
description: 'ISO2 2 characters country code. Example: US - United States'
example: US
email:
title: Email
maxLength: 100
type: string
description: Valid email address of brand support contact.
stockSymbol:
title: Stocksymbol
maxLength: 10
type: string
description: (Required for public company) stock symbol.
example: ABC
stockExchange:
allOf:
- $ref: '#/components/schemas/StockExchange'
description: (Required for public company) stock exchange.
example: NASDAQ
ipAddress:
title: Ipaddress
maxLength: 50
type: string
description: IP address of the browser requesting to create brand identity.
website:
title: Website
maxLength: 100
type: string
description: Brand website URL.
example: http://www.abcmobile.com
brandRelationship:
allOf:
- $ref: '#/components/schemas/BrandRelationship'
description: Brand relationship to the CSP
vertical:
title: Vertical
maxLength: 50
type: string
description: Vertical or industry segment of the brand.
altBusinessId:
title: Altbusinessid
maxLength: 50
type: string
description: Alternate business identifier such as DUNS, LEI, or GIIN
altBusinessIdType:
$ref: '#/components/schemas/AltBusinessIdType'
universalEin:
title: Universalein
type: string
description: Universal EIN of Brand, Read Only.
referenceId:
title: Referenceid
type: string
description: Unique identifier Telnyx assigned to the brand - the brandId
identityStatus:
$ref: '#/components/schemas/BrandIdentityStatus'
optionalAttributes:
$ref: '#/components/schemas/BrandOptionalAttributes'
mock:
title: Mock
type: boolean
description: Mock brand for testing purposes
default: false
mobilePhone:
title: Mobilephone
maxLength: 20
type: string
description: Valid mobile phone number in e.164 international format.
example: '+12024567890'
isReseller:
title: Isreseller
type: boolean
description: Indicates whether this brand is known to be a reseller
default: false
webhookURL:
title: WebhookURL
type: string
description: Webhook to which brand status updates are sent.
example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93
businessContactEmail:
title: BusinessContactEmail
type: string
description: 'Business contact email.
Required if `entityType` is `PUBLIC_PROFIT`.'
example: name@example.com
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Failover webhook to which brand status updates are sent.
createdAt:
type: string
description: Date and time that the brand was created at.
example: '2021-03-08T17:57:48.801186'
updatedAt:
type: string
description: Date and time that the brand was last updated at.
example: '2021-03-08T17:57:48.801186'
status:
title: status
description: Status of the brand
enum:
- OK
- REGISTRATION_PENDING
- REGISTRATION_FAILED
type: string
failureReasons:
title: failureReasons
description: Failure reasons for brand
type: string
description: Telnyx-specific extensions to The Campaign Registry's `Brand` type
TelnyxBrandWithCampaignsCount:
allOf:
- $ref: '#/components/schemas/TelnyxBrand'
- type: object
title: TelnyxBrandWithCampaignsCount
properties:
assignedCampaignsCount:
title: AssignedCampaignsCount
description: Number of campaigns associated with the brand
type: number
example: 3
TelnyxCampaignWithAssignedCount_CSP:
title: TelnyxCampaignWithAssignedCount_CSP
type: object
properties:
ageGated:
title: Agegated
type: boolean
description: Age gated content in campaign.
autoRenewal:
title: Autorenewal
type: boolean
description: Campaign subscription auto-renewal status.
billedDate:
title: Billeddate
type: string
description: Campaign recent billed date.
brandId:
title: Brandid
type: string
description: Unique identifier assigned to the brand.
example: d2ca9d69-641b-4131-83fa-5d0744f4c8a9
brandDisplayName:
title: Branddisplayname
description: Display or marketing name of the brand.
example: ABC Mobile
type: string
campaignId:
title: Campaignid
type: string
description: Unique identifier for a campaign.
example: 823d6b1a-6ed6-41a3-9c50-c8ff41b682ba
tcrBrandId:
title: TcrBrandid
type: string
description: Unique identifier assigned to the brand by the registry.
example: BBRAND1
tcrCampaignId:
title: TcrCampaignid
type: string
description: Unique identifier assigned to the campaign by the registry.
example: CCAMP1
createDate:
title: Createdate
type: string
description: Unix timestamp when campaign was created.
cspId:
title: Cspid
type: string
description: Alphanumeric identifier of the CSP associated with this campaign.
description:
title: Description
type: string
description: Summary description of this campaign.
directLending:
title: Directlending
type: boolean
embeddedLink:
title: Embeddedlink
type: boolean
description: Does message generated by the campaign include URL link in SMS?
embeddedPhone:
title: Embeddedphone
type: boolean
description: Does message generated by the campaign include phone number in SMS?
helpKeywords:
title: Helpkeywords
type: string
description: Subscriber help keywords. Multiple keywords are comma separated without space.
helpMessage:
title: Helpmessage
type: string
description: Help message of the campaign.
messageFlow:
title: Messageflow
type: string
description: Message flow description.
mock:
title: Mock
type: boolean
description: Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP.
nextRenewalOrExpirationDate:
title: Nextrenewalorexpirationdate
type: string
description: When the campaign would be due for its next renew/bill date.
numberPool:
title: Numberpool
type: boolean
description: Does campaign utilize pool of phone numbers?
optinKeywords:
title: Optinkeywords
type: string
description: Subscriber opt-in keywords. Multiple keywords are comma separated without space.
optinMessage:
title: Optinmessage
type: string
description: Subscriber opt-in message.
optoutKeywords:
title: Optoutkeywords
type: string
description: Subscriber opt-out keywords. Multiple keywords are comma separated without space.
optoutMessage:
title: Optoutmessage
type: string
description: Subscriber opt-out message.
referenceId:
title: Referenceid
type: string
description: Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns.
Can be used to prevent duplicate campaign registrations.
resellerId:
title: Resellerid
type: string
description: Alphanumeric identifier of the reseller that you want to associate with this campaign.
sample1:
title: Sample1
type: string
description: Message sample. Some campaign tiers require 1 or more message samples.
sample2:
title: Sample2
type: string
description: Message sample. Some campaign tiers require 2 or more message samples.
sample3:
title: Sample3
type: string
description: Message sample. Some campaign tiers require 3 or more message samples.
sample4:
title: Sample4
type: string
description: Message sample. Some campaign tiers require 4 or more message samples.
sample5:
title: Sample5
type: string
description: Message sample. Some campaign tiers require 5 or more message samples.
status:
title: Status
type: string
description: 'Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE
status. '
subUsecases:
title: Subusecases
uniqueItems: true
type: array
items:
type: string
description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation
to retrieve list of valid sub-usecases
subscriberHelp:
title: Subscriberhelp
type: boolean
description: Does campaign responds to help keyword(s)?
subscriberOptin:
title: Subscriberoptin
type: boolean
description: Does campaign require subscriber to opt-in before SMS is sent to subscriber?
subscriberOptout:
title: Subscriberoptout
type: boolean
description: Does campaign support subscriber opt-out keyword(s)?
termsAndConditions:
title: Termsandconditions
type: boolean
description: Is terms & conditions accepted?
usecase:
title: Usecase
type: string
description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases
available for given brand.
vertical:
title: Vertical
type: string
description: 'Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical`
operation to retrieve verticals available for given brand, vertical combination.
This field is deprecated.'
deprecated: true
webhookURL:
title: WebhookURL
type: string
description: Webhook to which campaign status updates are sent.
example: https://example.com/webhook
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Failover webhook to which campaign status updates are sent.
example: https://example.com/failover-webhook
isTMobileRegistered:
title: IsTMobileRegistered
type: boolean
description: Indicates whether the campaign is registered with T-Mobile.
isTMobileSuspended:
title: isTMobileSuspended
type: boolean
description: Indicates whether the campaign is suspended with T-Mobile.
isTMobileNumberPoolingEnabled:
title: isTMobileNumberPoolingEnabled
type: boolean
description: Indicates whether the campaign has a T-Mobile number pool ID associated with it.
failureReasons:
title: failureReasons
description: Failure reasons if campaign submission failed
type: string
submissionStatus:
title: submissionStatus
description: Campaign submission status
enum:
- CREATED
- FAILED
- PENDING
type: string
campaignStatus:
title: campaignStatus
description: Campaign status
example: TCR_ACCEPTED
enum:
- TCR_PENDING
- TCR_SUSPENDED
- TCR_EXPIRED
- TCR_ACCEPTED
- TCR_FAILED
- TELNYX_ACCEPTED
- TELNYX_FAILED
- MNO_PENDING
- MNO_ACCEPTED
- MNO_REJECTED
- MNO_PROVISIONED
- MNO_PROVISIONING_FAILED
type: string
privacyPolicyLink:
title: PrivacyPolicyLink
type: string
description: Link to the campaign's privacy policy.
termsAndConditionsLink:
title: TermsAndConditionsLink
type: string
description: Link to the campaign's terms and conditions.
embeddedLinkSample:
title: EmbeddedLinkSample
type: string
description: Sample of an embedded link that will be sent to subscribers.
assignedPhoneNumbersCount:
title: AssignedPhoneNumbersCount
description: Number of phone numbers associated with the campaign
type: number
example: 3
TelnyxCampaign_CSP:
title: TelnyxCampaign_CSP
required:
- brandId
- campaignId
- cspId
- description
- mock
- subUsecases
- termsAndConditions
- usecase
type: object
properties:
ageGated:
title: Agegated
type: boolean
description: Age gated content in campaign.
autoRenewal:
title: Autorenewal
type: boolean
description: Campaign subscription auto-renewal status.
billedDate:
title: Billeddate
type: string
description: Campaign recent billed date.
brandId:
title: Brandid
type: string
description: Unique identifier assigned to the brand.
example: d2ca9d69-641b-4131-83fa-5d0744f4c8a9
brandDisplayName:
title: Branddisplayname
description: Display or marketing name of the brand.
example: ABC Mobile
type: string
campaignId:
title: Campaignid
type: string
description: Unique identifier for a campaign.
example: 823d6b1a-6ed6-41a3-9c50-c8ff41b682ba
tcrBrandId:
title: TcrBrandid
type: string
description: Unique identifier assigned to the brand by the registry.
example: BBRAND1
tcrCampaignId:
title: TcrCampaignid
type: string
description: Unique identifier assigned to the campaign by the registry.
example: CCAMP1
createDate:
title: Createdate
type: string
description: Unix timestamp when campaign was created.
cspId:
title: Cspid
type: string
description: Alphanumeric identifier of the CSP associated with this campaign.
description:
title: Description
type: string
description: Summary description of this campaign.
directLending:
title: Directlending
type: boolean
embeddedLink:
title: Embeddedlink
type: boolean
description: Does message generated by the campaign include URL link in SMS?
embeddedPhone:
title: Embeddedphone
type: boolean
description: Does message generated by the campaign include phone number in SMS?
helpKeywords:
title: Helpkeywords
type: string
description: Subscriber help keywords. Multiple keywords are comma separated without space.
helpMessage:
title: Helpmessage
type: string
description: Help message of the campaign.
messageFlow:
title: Messageflow
type: string
description: Message flow description.
mock:
title: Mock
type: boolean
description: Campaign created from mock brand. Mocked campaign cannot be shared with an upstream CNP.
nextRenewalOrExpirationDate:
title: Nextrenewalorexpirationdate
type: string
description: When the campaign would be due for its next renew/bill date.
numberPool:
title: Numberpool
type: boolean
description: Does campaign utilize pool of phone numbers?
optinKeywords:
title: Optinkeywords
type: string
description: Subscriber opt-in keywords. Multiple keywords are comma separated without space.
optinMessage:
title: Optinmessage
type: string
description: Subscriber opt-in message.
optoutKeywords:
title: Optoutkeywords
type: string
description: Subscriber opt-out keywords. Multiple keywords are comma separated without space.
optoutMessage:
title: Optoutmessage
type: string
description: Subscriber opt-out message.
referenceId:
title: Referenceid
type: string
description: Caller supplied campaign reference ID. If supplied, the value must be unique across all submitted campaigns.
Can be used to prevent duplicate campaign registrations.
resellerId:
title: Resellerid
type: string
description: Alphanumeric identifier of the reseller that you want to associate with this campaign.
sample1:
title: Sample1
type: string
description: Message sample. Some campaign tiers require 1 or more message samples.
sample2:
title: Sample2
type: string
description: Message sample. Some campaign tiers require 2 or more message samples.
sample3:
title: Sample3
type: string
description: Message sample. Some campaign tiers require 3 or more message samples.
sample4:
title: Sample4
type: string
description: Message sample. Some campaign tiers require 4 or more message samples.
sample5:
title: Sample5
type: string
description: Message sample. Some campaign tiers require 5 or more message samples.
status:
title: Status
type: string
description: 'Current campaign status. Possible values: ACTIVE, EXPIRED. A newly created campaign defaults to ACTIVE
status. '
subUsecases:
title: Subusecases
uniqueItems: true
type: array
items:
type: string
description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation
to retrieve list of valid sub-usecases
subscriberHelp:
title: Subscriberhelp
type: boolean
description: Does campaign responds to help keyword(s)?
subscriberOptin:
title: Subscriberoptin
type: boolean
description: Does campaign require subscriber to opt-in before SMS is sent to subscriber?
subscriberOptout:
title: Subscriberoptout
type: boolean
description: Does campaign support subscriber opt-out keyword(s)?
termsAndConditions:
title: Termsandconditions
type: boolean
description: Is terms & conditions accepted?
usecase:
title: Usecase
type: string
description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases
available for given brand.
vertical:
title: Vertical
type: string
description: 'Business/industry segment of this campaign (Deprecated). Must be of defined valid types. Use `/registry/enum/vertical`
operation to retrieve verticals available for given brand, vertical combination.
This field is deprecated.'
deprecated: true
webhookURL:
title: WebhookURL
type: string
description: Webhook to which campaign status updates are sent.
example: https://example.com/webhook
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Failover webhook to which campaign status updates are sent.
example: https://example.com/failover-webhook
isTMobileRegistered:
title: IsTMobileRegistered
type: boolean
description: Indicates whether the campaign is registered with T-Mobile.
isTMobileSuspended:
title: isTMobileSuspended
type: boolean
description: Indicates whether the campaign is suspended with T-Mobile.
isTMobileNumberPoolingEnabled:
title: isTMobileNumberPoolingEnabled
type: boolean
description: Indicates whether the campaign has a T-Mobile number pool ID associated with it.
failureReasons:
title: failureReasons
description: Failure reasons if campaign submission failed
type: string
submissionStatus:
title: submissionStatus
description: Campaign submission status
enum:
- CREATED
- FAILED
- PENDING
type: string
campaignStatus:
title: campaignStatus
description: Campaign status
example: TCR_ACCEPTED
enum:
- TCR_PENDING
- TCR_SUSPENDED
- TCR_EXPIRED
- TCR_ACCEPTED
- TCR_FAILED
- TELNYX_ACCEPTED
- TELNYX_FAILED
- MNO_PENDING
- MNO_ACCEPTED
- MNO_REJECTED
- MNO_PROVISIONED
- MNO_PROVISIONING_FAILED
type: string
privacyPolicyLink:
title: PrivacyPolicyLink
type: string
description: Link to the campaign's privacy policy.
termsAndConditionsLink:
title: TermsAndConditionsLink
type: string
description: Link to the campaign's terms and conditions.
embeddedLinkSample:
title: EmbeddedLinkSample
type: string
description: Sample of an embedded link that will be sent to subscribers.
description: Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign
is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to
the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or
expired(non-reversible), campaign data is deleted from the OSR service. Most attributes of campaignare immutable,
including **usecase**, **vertical**, **brandId** and **cspId**.
TelnyxConversationChannel:
type: string
enum:
- phone_call
- web_call
- sms_chat
- web_chat
title: TelnyxConversationChannel
TelnyxDesignClone:
type: object
description: Create a voice clone from a voice design using the Telnyx provider.
required:
- name
- voice_design_id
- language
- gender
properties:
name:
type: string
minLength: 1
maxLength: 255
description: Name for the voice clone.
voice_design_id:
type: string
format: uuid
description: UUID of the source voice design to clone.
language:
type: string
description: ISO 639-1 language code for the clone. Supports the combined Telnyx language set.
gender:
type: string
enum:
- male
- female
- neutral
description: Gender of the voice clone.
provider:
type: string
enum:
- telnyx
- Telnyx
default: telnyx
description: Voice synthesis provider. Defaults to `telnyx`.
example:
name: clone-narrator
voice_design_id: 550e8400-e29b-41d4-a716-446655440000
language: en
gender: male
provider: telnyx
TelnyxDownstreamCampaign:
title: TelnyxDownstreamCampaign
required:
- tcrBrandId
- tcrCampaignId
type: object
properties:
ageGated:
title: AgeGated
type: boolean
description: Age gated content in campaign.
assignedPhoneNumbersCount:
title: AssignedPhoneNumbersCount
description: Number of phone numbers associated with the campaign
type: number
example: 3
brandDisplayName:
title: Branddisplayname
description: Display or marketing name of the brand.
example: ABC Mobile
type: string
campaignStatus:
title: campaignStatus
description: Campaign status
example: TCR_ACCEPTED
enum:
- TCR_PENDING
- TCR_SUSPENDED
- TCR_EXPIRED
- TCR_ACCEPTED
- TCR_FAILED
- TELNYX_ACCEPTED
- TELNYX_FAILED
- MNO_PENDING
- MNO_ACCEPTED
- MNO_REJECTED
- MNO_PROVISIONED
- MNO_PROVISIONING_FAILED
type: string
description:
title: Description
type: string
description: Summary description of this campaign.
directLending:
title: Directlending
type: boolean
description: Direct lending or loan arrangement.
embeddedLink:
title: Embeddedlink
type: boolean
description: Does message generated by the campaign include URL link in SMS?
embeddedLinkSample:
title: EmbeddedLinkSample
type: string
description: Sample of an embedded link that will be sent to subscribers.
embeddedPhone:
title: Embeddedphone
type: boolean
description: Does message generated by the campaign include phone number in SMS?
failureReasons:
title: failureReasons
description: Failure reasons if campaign submission failed
type: string
helpKeywords:
title: Helpkeywords
type: string
description: Subscriber help keywords. Multiple keywords are comma separated without space.
helpMessage:
title: Helpmessage
type: string
description: Help message of the campaign.
isNumberPoolingEnabled:
title: isNumberPoolingEnabled
type: boolean
description: Indicates whether the campaign has a T-Mobile number pool ID associated with it.
messageFlow:
title: Messageflow
type: string
description: Message flow description.
numberPool:
title: Numberpool
type: boolean
description: Does campaign utilize pool of phone numbers?
optinKeywords:
title: Optinkeywords
type: string
description: Subscriber opt-in keywords. Multiple keywords are comma separated without space.
optinMessage:
title: Optinmessage
type: string
description: Subscriber opt-in message.
optoutKeywords:
title: Optoutkeywords
type: string
description: Subscriber opt-out keywords. Multiple keywords are comma separated without space.
optoutMessage:
title: Optoutmessage
type: string
description: Subscriber opt-out message.
privacyPolicyLink:
title: PrivacyPolicyLink
type: string
description: Link to the campaign's privacy policy.
usecase:
title: Usecase
type: string
description: Campaign usecase. Must be of defined valid types. Use `/10dlc/enum/usecase` operation to retrieve usecases
available for given brand.
sample1:
title: Sample1
type: string
description: Message sample. Some campaign tiers require 1 or more message samples.
sample2:
title: Sample2
type: string
description: Message sample. Some campaign tiers require 2 or more message samples.
sample3:
title: Sample3
type: string
description: Message sample. Some campaign tiers require 3 or more message samples.
sample4:
title: Sample4
type: string
description: Message sample. Some campaign tiers require 4 or more message samples.
sample5:
title: Sample5
type: string
description: Message sample. Some campaign tiers require 5 or more message samples.
subUsecases:
title: Subusecases
uniqueItems: true
type: array
items:
type: string
description: Campaign sub-usecases. Must be of defined valid sub-usecase types. Use `/10dlc/enum/usecase` operation
to retrieve list of valid sub-usecases
subscriberOptin:
title: Subscriberoptin
type: boolean
description: Does campaign require subscriber to opt-in before SMS is sent to subscriber?
subscriberOptout:
title: Subscriberoptout
type: boolean
description: Does campaign support subscriber opt-out keyword(s)?
tcrBrandId:
title: TcrBrandid
type: string
description: Unique identifier assigned to the brand by the registry.
example: BBRAND1
tcrCampaignId:
title: TcrCampaignid
type: string
description: Unique identifier assigned to the campaign by the registry.
example: CCAMP1
termsAndConditions:
title: Termsandconditions
type: boolean
description: Is terms & conditions accepted?
termsAndConditionsLink:
title: TermsAndConditionsLink
type: string
description: Link to the campaign's terms and conditions.
webhookURL:
title: WebhookURL
type: string
description: Webhook to which campaign status updates are sent.
example: https://example.com/webhook
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Failover webhook to which campaign status updates are sent.
example: https://example.com/failover-webhook
createdAt:
type: string
description: Date and time that the brand was created at.
example: '2021-03-08T17:57:48.801186'
updatedAt:
type: string
description: Date and time that the brand was last updated at.
example: '2021-03-08T17:57:48.801186'
description: Campaign is generated by the 10DLC registry once the corresponding campaign request is approved. Each campaign
is assigned a unique identifier - **campaignId**. Once a campaign is activated, limited information is published to
the NetNumber OSR service for consumption by members of the ecosystem. When a campaign is suspended(reversible) or
expired(non-reversible), campaign data is deleted from the OSR service.
TelnyxDownstreamCampaignRecordSet:
title: TelnyxDownstreamCampaignRecordSet
type: object
properties:
records:
title: Records
type: array
items:
$ref: '#/components/schemas/TelnyxDownstreamCampaign'
page:
title: Page
type: integer
totalRecords:
title: Totalrecords
type: integer
TelnyxError:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
meta:
type: object
properties:
url:
type: string
TelnyxErrors:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/TelnyxError'
TelnyxProviderParams:
type: object
description: 'Telnyx provider-specific parameters. For the `Ultra` model, use `voice_speed`, `volume`, and `emotion`.
`Bayan` and `Sukhan` don''t use `temperature`, `volume`, or `emotion`. `Bayan` accepts `voice_speed` from 0.5 to 2.0;
`Sukhan` doesn''t support it. `Bayan` synthesizes at a native 16 kHz: `sampling_rate` `8000`, `22050`, or `24000`
is resampled, needs `response_format: pcm`, and isn''t available with `output_type: audio_id`. `Sukhan`''s `response_format`
is restricted to `mp3` or `pcm` (no `wav`).'
properties:
voice_speed:
type: number
format: float
description: Voice speed multiplier. Telnyx `Ultra` voices accept values from 0.6 to 1.5 — requests outside that
range are rejected by the synthesis engine. `Bayan` accepts values from 0.5 to 2.0. `KokoroTTS` and `Qwen3TTS`
accept the field but do not apply it. `Sukhan` doesn't support it.
minimum: 0.1
maximum: 2.0
default: 1.0
response_format:
type: string
description: Audio response format.
default: mp3
sampling_rate:
type: integer
description: 'Audio sampling rate in Hz. `Bayan` ignores the default and synthesizes at its native 16 kHz unless
`8000`, `22050`, or `24000` is set explicitly with `response_format: pcm`. Resampled rates aren''t available with
`output_type: audio_id`.'
default: 24000
volume:
type: number
format: float
description: Volume level for the Ultra model. Telnyx `Ultra` voices accept values from 0.5 to 2.0 — requests outside
that range are rejected by the synthesis engine. `KokoroTTS`, `Qwen3TTS`, `Bayan`, and `Sukhan` voices accept
the field but do not apply it.
minimum: 0.0
maximum: 2.0
default: 1.0
emotion:
type: string
description: Emotion control for the Ultra model. Adjusts the emotional tone of the synthesized speech.
enum:
- neutral
- happy
- sad
- angry
- fearful
- disgusted
- surprised
TelnyxQwen3TTSClone:
type: object
description: Upload-based voice clone using the Telnyx Qwen3TTS model (default).
required:
- audio_file
- name
- language
- gender
- provider
properties:
audio_file:
type: string
format: binary
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality,
provide 5–10 seconds of clear, uninterrupted speech. Maximum size: 20MB.'
name:
type: string
maxLength: 255
description: Name for the voice clone.
language:
type: string
pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$
description: ISO 639-1 language code from the Qwen language set.
gender:
type: string
enum:
- male
- female
- neutral
description: Gender of the voice clone.
ref_text:
type: string
description: Optional transcript of the audio file. Providing this improves clone quality.
label:
type: string
description: Optional custom label describing the voice style.
model_id:
type:
- string
- 'null'
enum:
- Qwen3TTS
- null
description: TTS model identifier. Nullable/omittable — defaults to Qwen3TTS.
provider:
type: string
enum:
- telnyx
- Telnyx
description: Voice synthesis provider. Must be `telnyx`.
TelnyxTranscriptionLanguage:
title: Telnyx transcription engine list of languages
type: string
description: Language to use for speech recognition
example: en
default: en
enum:
- en
- zh
- de
- es
- ru
- ko
- fr
- ja
- pt
- tr
- pl
- ca
- nl
- ar
- sv
- it
- id
- hi
- fi
- vi
- he
- uk
- el
- ms
- cs
- ro
- da
- hu
- ta
- 'no'
- th
- ur
- hr
- bg
- lt
- la
- mi
- ml
- cy
- sk
- te
- fa
- lv
- bn
- sr
- az
- sl
- kn
- et
- mk
- br
- eu
- is
- hy
- ne
- mn
- bs
- kk
- sq
- sw
- gl
- mr
- pa
- si
- km
- sn
- yo
- so
- af
- oc
- ka
- be
- tg
- sd
- gu
- am
- yi
- lo
- uz
- fo
- ht
- ps
- tk
- nn
- mt
- sa
- lb
- my
- bo
- tl
- mg
- as
- tt
- haw
- ln
- ha
- ba
- jw
- su
- auto_detect
TelnyxUltraClone:
type: object
description: Upload-based voice clone using the Telnyx Ultra model.
required:
- audio_file
- name
- language
- gender
- model_id
- provider
properties:
audio_file:
type: string
format: binary
description: 'Audio file to clone the voice from. Supported formats: WAV, MP3, FLAC, OGG, M4A. For best quality,
provide up to 60 seconds of clear, uninterrupted speech. Maximum size: 20MB.'
name:
type: string
maxLength: 255
description: Name for the voice clone.
language:
type: string
pattern: ^([Aa]uto|[a-z]{2,3}(-[A-Za-z0-9]{2,8})*)$
description: ISO 639-1 language code from the Ultra language set (42 languages).
gender:
type: string
enum:
- male
- female
- neutral
description: Gender of the voice clone.
ref_text:
type: string
description: Optional transcript of the audio file. Providing this improves clone quality.
label:
type: string
description: Optional custom label describing the voice style.
model_id:
type: string
enum:
- Ultra
description: TTS model identifier. Must be `Ultra`.
provider:
type: string
enum:
- telnyx
- Telnyx
description: Voice synthesis provider. Must be `telnyx`.
TelnyxVoiceSettings:
type: object
title: Telnyx Voice Settings
properties:
type:
type: string
enum:
- telnyx
description: Voice settings provider type
voice_speed:
description: The voice speed to be used for the voice. Telnyx `Ultra` voices accept values from 0.6 to 1.5; values
outside that range are rejected by the synthesis engine. `Qwen3TTS` and `KokoroTTS` accept the field but do not
apply it. Default value is 1.0. Not supported for `Telnyx.Bayan.*` or `Telnyx.Sukhan.*` voices.
type: number
default: 1.0
format: float
example: 1.0
minimum: 0.1
maximum: 2.0
required:
- type
TemplateType:
type: string
enum:
- custom
- default
title: TemplateType
TermsOfServiceInfo:
type: object
properties:
agreements:
type: array
items:
$ref: '#/components/schemas/TermsOfServiceInfoItem'
TermsOfServiceInfoItem:
type: object
properties:
product_type:
$ref: '#/components/schemas/TosProductType'
current_version:
type: string
description: The latest published version of these terms.
example: v1.0.0
terms_url:
type: string
description: A link to the full terms text.
example: https://telnyx.com/terms/reputation-services
effective_date:
type: string
format: date
description: The date this version took effect.
example: '2025-07-10'
description:
type: string
description: A short summary of the product these terms cover.
example: Terms and Conditions for Telnyx Number Reputation service
TestAgent:
type: object
properties:
id:
type: integer
agent_name:
type: string
description: Name of the test agent.
contact_number:
type: string
description: Contact phone number for the test agent.
inbound:
type: boolean
description: Whether the test agent accepts inbound calls.
description:
type: string
language:
type: string
description: ISO language code the test agent converses in.
assistant_id:
type: string
description: ID of the Telnyx AI assistant under test.
chat_assistant_id:
type: string
description: ID of the chat assistant under test, when testing text channels.
llm_system_prompt:
type: string
llm_model:
type: string
description: Model used to drive the test agent's side of the conversation.
llm_temperature:
type: number
llm_max_tokens:
type: integer
outbound_auto_call:
type: boolean
sip_endpoint:
type: string
sip_auth:
type:
- object
- 'null'
additionalProperties:
type: string
knowledge_base_files:
type: array
items: {}
description: Knowledge-base files associated with the test agent.
enabled_personalities:
type: array
items:
type: integer
description: IDs of the test personalities enabled for this agent.
auto_update_dropoff_nodes:
type: boolean
auto_update_topic_nodes:
type: boolean
hallucination_metric_kb_files:
type: array
items:
type: integer
outbound_numbers:
type:
- array
- 'null'
items: {}
description: Outbound numbers associated with the test agent.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- id
- agent_name
- assistant_id
- created_at
- updated_at
example:
id: 1259
agent_name: Support Bot Under Test
contact_number: '+13125550123'
inbound: false
description: Evaluates the support assistant against generated callers.
language: en
assistant_id: e1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6
chat_assistant_id: ''
llm_system_prompt: You are calling a customer support line.
llm_model: openai/gpt-oss-120b
llm_temperature: 0.7
llm_max_tokens: 512
outbound_auto_call: false
sip_endpoint: ''
sip_auth: null
knowledge_base_files: []
enabled_personalities:
- 4567
auto_update_dropoff_nodes: false
auto_update_topic_nodes: false
hallucination_metric_kb_files: []
outbound_numbers: []
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:04:05.123456Z'
TestAgentListResponse:
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
description: Link to the next page of results, or null.
previous:
type:
- string
- 'null'
format: uri
description: Link to the previous page of results, or null.
results:
type: array
items:
$ref: '#/components/schemas/TestAgent'
required:
- count
- next
- previous
- results
example:
count: 1
next: null
previous: null
results:
- id: 1259
agent_name: Support Bot Under Test
contact_number: '+13125550123'
inbound: false
description: Evaluates the support assistant against generated callers.
language: en
assistant_id: e1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6
chat_assistant_id: ''
llm_system_prompt: You are calling a customer support line.
llm_model: openai/gpt-oss-120b
llm_temperature: 0.7
llm_max_tokens: 512
outbound_auto_call: false
sip_endpoint: ''
sip_auth: null
knowledge_base_files: []
enabled_personalities:
- 4567
auto_update_dropoff_nodes: false
auto_update_topic_nodes: false
hallucination_metric_kb_files: []
outbound_numbers: []
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:04:05.123456Z'
TestDeviceCreateRequest:
type: object
additionalProperties: false
properties:
phone_number:
type: string
maxLength: 16
pattern: ^\+[1-9][0-9]{1,14}$
required:
- phone_number
example:
phone_number: '+13125550123'
TestDeviceInviteStatus:
type: string
enum:
- PENDING
- ACCEPTED
- DECLINED
TestDeviceResponse:
type: object
additionalProperties: false
properties:
test_device_id:
type: string
format: uuid
phone_number:
type: string
invite_status:
$ref: '#/components/schemas/TestDeviceInviteStatus'
required:
- test_device_id
- phone_number
- invite_status
example:
test_device_id: 44444444-4444-4444-8444-444444444444
phone_number: '+13125550123'
invite_status: ACCEPTED
TestMetricGenerationProgress:
type: object
properties:
agent_id:
type: integer
status:
type: string
enum:
- queued
- processing
- completed
- failed
current_step:
type: string
metrics:
type: array
items:
type: object
properties:
name:
type: string
description:
type: string
agent:
type: integer
eval_type:
type: string
scenarios:
type: array
items:
type: integer
error:
type:
- string
- 'null'
required:
- agent_id
- status
- current_step
- metrics
- error
example:
agent_id: 1259
status: completed
current_step: Completed
metrics:
- name: Greeting quality
description: Checks whether the assistant greets the caller.
agent: 1259
eval_type: continuous_qualitative
scenarios: []
error: null
TestPersonality:
type: object
properties:
id:
type: integer
forked_from:
type:
- integer
- 'null'
description: ID of the personality this one was forked from.
organization:
type:
- integer
- 'null'
project:
type:
- integer
- 'null'
name:
type: string
description: Display name of the personality.
prompt:
type: string
description: Instructions the simulated caller follows.
language:
type: string
description: ISO language code the simulated caller speaks.
accent:
type: string
background_noise:
type:
- string
- 'null'
interruption_level:
type:
- string
- 'null'
description: How aggressively the personality interrupts the assistant.
speed:
type:
- number
- string
- 'null'
generation_config:
type:
- object
- 'null'
network_simulation:
type:
- object
- 'null'
message_plan:
type:
- object
- 'null'
description: Idle-timeout plan for messages during a call.
start_speaking_plan:
type:
- number
- object
- 'null'
stop_speaking_plan:
type:
- object
- 'null'
background_sound_volume:
type:
- number
- 'null'
voice_volume:
type:
- number
- 'null'
effective_voice_volume:
type:
- number
- 'null'
end_call_enabled:
type: boolean
required:
- id
- name
- prompt
- language
- end_call_enabled
example:
id: 4643
name: Interruptive (High)
prompt: Speak very impatiently. Comment on trivial things and rarely let others finish speaking.
language: uk
accent: Ukrainian
interruption_level: high
end_call_enabled: true
TestPersonalityListResponse:
type: array
items:
$ref: '#/components/schemas/TestPersonality'
example:
- id: 4643
name: Interruptive (High)
prompt: Speak very impatiently. Comment on trivial things and rarely let others finish speaking.
language: uk
accent: Ukrainian
interruption_level: high
end_call_enabled: true
TestRunDetailResult:
properties:
name:
type: string
title: Name
status:
$ref: '#/components/schemas/TestStatus'
type: object
required:
- name
- status
title: TestRunDetailResult
TestRunResponse:
properties:
run_id:
type: string
format: uuid
title: Run Id
description: Unique identifier for this specific test run execution.
example: 987fcdeb-51a2-43d1-b456-426614174000
test_id:
type: string
format: uuid
title: Test Id
description: Identifier of the assistant test that was executed.
example: 123e4567-e89b-12d3-a456-426614174000
status:
$ref: '#/components/schemas/TestStatus'
triggered_by:
type: string
title: Triggered By
description: How this test run was initiated (manual, scheduled, or API).
example: cron
completed_at:
type: string
format: date-time
title: Completed At
description: Timestamp when the test run finished execution.
logs:
type: string
title: Logs
description: Detailed execution logs and debug information.
conversation_id:
type: string
title: Conversation Id
description: Identifier of the conversation created during test execution.
conversation_insights_id:
type: string
title: Conversation Insights Id
description: Identifier for conversation analysis and insights data.
test_suite_run_id:
type: string
format: uuid
title: Test Suite Run Id
description: Identifier linking this run to a test suite execution batch.
created_at:
type: string
format: date-time
title: Created At
description: Timestamp when the test run was created and queued.
example: '2024-01-24T10:30:00Z'
updated_at:
type: string
format: date-time
title: Updated At
description: Timestamp of the last update to this test run.
detail_status:
items:
$ref: '#/components/schemas/TestRunDetailResult'
type: array
title: Detail Status
description: Detailed evaluation results for each rubric criteria. Name is name of the criteria from the rubric
and status is the result of the evaluation. This list will have a result for every criteria in the rubric section.
type: object
required:
- run_id
- test_id
- status
- triggered_by
- created_at
title: TestRunResponse
description: 'Response model containing test run execution details and results.
Provides comprehensive information about a test execution including
status, timing, logs, and detailed evaluation results.'
TestRunResult:
type: object
properties:
id:
type: integer
name:
type: string
agent:
type: integer
agent_name:
type: string
agent_inbound:
type: boolean
status:
type: string
description: 'Run batch status: running, completed, failed, pending, in_progress, evaluating, in_queue, timeout,
cancelled, or scaling_up.'
success_rate:
type:
- number
- string
description: Share of runs judged successful.
run_as_text:
type: boolean
description: Whether the batch ran as text chat rather than voice calls.
is_cronjob:
type: boolean
description: Whether this batch was started by a scheduled job.
runs:
type:
- object
- 'null'
description: Per-run detail keyed by run ID.
additionalProperties:
type: object
properties:
id:
type: integer
scenario:
type: object
properties:
id:
type: integer
name:
type: string
personality_name:
type: string
expected_outcome_prompt:
type: string
scenario_name:
type: string
personality_name:
type: string
success:
type:
- boolean
- 'null'
status:
type: string
evaluation_status:
type: string
error_message:
type: string
test_profile_name:
type: string
duration:
type: string
timestamp:
type: string
executed_at:
type: string
met_expected_outcome_count:
type:
- integer
- string
total_expected_outcome_count:
type:
- integer
- string
total_runs_count:
type:
- integer
- string
completed_runs_count:
type:
- integer
- string
success_runs_count:
type:
- integer
- string
failed_runs_count:
type:
- integer
- string
scenarios:
type:
- array
- 'null'
items:
type: object
properties:
id:
type: integer
name:
type: string
run_type:
type:
- string
- 'null'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- id
- name
- agent
- status
- created_at
- updated_at
example:
id: 10119
name: Refund escalation flow - run
agent: 1259
agent_name: Support Bot Under Test
agent_inbound: false
status: completed
success_rate: 0.8
run_as_text: false
is_cronjob: false
runs: null
met_expected_outcome_count: 4
total_expected_outcome_count: 5
total_runs_count: 5
completed_runs_count: 5
success_runs_count: 4
failed_runs_count: 1
scenarios:
- id: 9512
name: Refund escalation flow
run_type: scheduled
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:34:05.123456Z'
TestRunResultListResponse:
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/TestRunResultSummary'
required:
- next
- previous
- results
example:
count: 1
next: null
previous: null
results:
- id: 10119
name: Refund escalation flow - run
agent: 1259
agent_name: Support Bot Under Test
agent_inbound: false
status: completed
success_rate: 0.8
run_as_text: false
is_cronjob: false
runs: null
met_expected_outcome_count: 4
total_expected_outcome_count: 5
total_runs_count: 5
completed_runs_count: 5
success_runs_count: 4
failed_runs_count: 1
scenarios:
- id: 9512
name: Refund escalation flow
run_type: scheduled
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:34:05.123456Z'
TestRunResultSummary:
type: object
properties:
id:
type: integer
name:
type: string
agent:
type: integer
agent_name:
type: string
agent_inbound:
type: boolean
status:
type: string
description: 'Run batch status: running, completed, failed, pending, in_progress, evaluating, in_queue, timeout,
cancelled, or scaling_up.'
success_rate:
type:
- number
- string
description: Share of runs judged successful.
run_as_text:
type: boolean
description: Whether the batch ran as text chat rather than voice calls.
is_cronjob:
type: boolean
description: Whether this batch was started by a scheduled job.
runs:
type:
- array
- 'null'
description: Run summaries in this batch. Retrieve the batch for detail keyed by run ID.
items:
type: object
properties:
id:
type: integer
status:
type: string
scenario:
type: integer
scenario_name:
type: string
number:
type:
- string
- 'null'
inbound_number:
type:
- string
- 'null'
met_expected_outcome_count:
type:
- integer
- string
total_expected_outcome_count:
type:
- integer
- string
total_runs_count:
type:
- integer
- string
completed_runs_count:
type:
- integer
- string
success_runs_count:
type:
- integer
- string
failed_runs_count:
type:
- integer
- string
scenarios:
type:
- array
- 'null'
items:
type: object
properties:
id:
type: integer
name:
type: string
run_type:
type:
- string
- 'null'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- id
- name
- agent
- status
- created_at
- updated_at
example:
id: 10119
name: Refund escalation flow - run
agent: 1259
agent_name: Support Bot Under Test
agent_inbound: false
status: completed
success_rate: 0.8
run_as_text: false
is_cronjob: false
runs: null
met_expected_outcome_count: 4
total_expected_outcome_count: 5
total_runs_count: 5
completed_runs_count: 5
success_runs_count: 4
failed_runs_count: 1
scenarios:
- id: 9512
name: Refund escalation flow
run_type: scheduled
created_at: '2026-10-13T18:04:05.123456Z'
updated_at: '2026-10-13T18:34:05.123456Z'
TestStatus:
type: string
enum:
- pending
- starting
- running
- passed
- failed
- error
title: TestStatus
description: "Represents the lifecycle of a test:\n - 'pending': Test is waiting to be executed.\n - 'starting': Test\
\ execution is initializing.\n - 'running': Test is currently executing.\n - 'passed': Test completed successfully.\n\
\ - 'failed': Test executed but did not pass.\n - 'error': An error occurred during test execution."
TestSuitesResponse:
properties:
data:
items:
type: string
type: array
title: Data
description: Array of unique test suite names available to the user.
example:
- customer-support
- sales-flow
- onboarding
type: object
required:
- data
title: TestSuitesResponse
description: 'Response containing all available test suite names.
Returns a list of distinct test suite names that can be used for
filtering and organizing tests.'
TestWebhookToolRequest:
properties:
arguments:
type: object
title: Arguments
description: Key-value arguments to use for the webhook test
additionalProperties: true
dynamic_variables:
type: object
title: Dynamic Variables
description: Key-value dynamic variables to use for the webhook test
additionalProperties: true
type: object
title: TestWebhookToolRequest
description: Request model for testing a webhook tool
TestWebhookToolResponse:
properties:
success:
type: boolean
title: Success
status_code:
type: integer
title: Status Code
content_type:
type: string
title: Content Type
response:
type: string
title: Response
request:
type: object
title: Request
additionalProperties: true
type: object
required:
- success
- status_code
- content_type
- response
- request
title: TestWebhookToolResponse
description: Response model for webhook tool test results
TestWebhookToolResponseData:
properties:
data:
$ref: '#/components/schemas/TestWebhookToolResponse'
type: object
required:
- data
title: TestWebhookToolResponseData
description: Response model for webhook tool test results
TexmlAiGatherWebhookSchema:
type: object
title: TeXML AI Gather Webhook
description: Webhook sent to the action URL when AI Gather completes. Contains standard call parameters plus AI conversation
results in base64-encoded JSON format.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
Base64MessageHistory:
type: string
description: Base64-encoded JSON array of message history (conditional).
example: W3sicm9sZSI6InVzZXIiLCJjb250ZW50IjoiSGVsbG8ifV0=
Base64Result:
type: string
description: Base64-encoded JSON object containing AI gather result (conditional).
example: eyJzdGF0dXMiOiJ2YWxpZCIsInJlc3VsdCI6eyJ0ZXh0IjoiSSB3b3VsZCBsaWtlIHRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50In19
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
Status:
type: string
description: The status of the AI gather operation.
example: valid
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
required:
- AccountSid
- CallSid
- CallSidLegacy
- From
- To
- ConnectionId
- Status
TexmlApplication:
type: object
title: Texml Application
properties:
id:
$ref: '#/components/schemas/IntId'
record_type:
type: string
description: Identifies the type of the resource.
example: texml_application
friendly_name:
$ref: '#/components/schemas/ApplicationName'
active:
$ref: '#/components/schemas/ConnectionActive'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
dtmf_type:
$ref: '#/components/schemas/DtmfType'
first_command_timeout:
$ref: '#/components/schemas/FirstCommandTimeout'
first_command_timeout_secs:
$ref: '#/components/schemas/FirstCommandTimeoutSecs'
voice_url:
type: string
description: URL to which Telnyx will deliver your XML Translator webhooks.
format: uri
example: https://example.com
voice_fallback_url:
type: string
description: URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your
voice_url.
default: null
format: uri
example: https://fallback.example.com
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this TeXML Application.
default: false
voice_method:
type: string
description: HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or
'post'.
enum:
- get
- post
default: post
example: get
status_callback:
type: string
description: URL for Telnyx to send requests to containing information about call progress events.
default: null
format: uri
example: https://example.com
status_callback_method:
type: string
description: HTTP request method Telnyx should use when requesting the status_callback URL.
enum:
- get
- post
default: post
example: get
tags:
type: array
items:
type: string
description: Tags associated with the Texml Application.
example:
- tag1
- tag2
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of inbound calls to phone numbers associated with this
connection.
default: null
example: 10
shaken_stir_enabled:
type: boolean
description: When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.
default: false
example: false
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way
a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called
from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
default: null
example: example
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
example: only_my_connections
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/OutboundVoiceProfileId'
created_at:
$ref: '#/components/schemas/CreatedAt'
updated_at:
$ref: '#/components/schemas/UpdatedAt'
example:
id: '1293384261075731499'
record_type: texml_application
active: false
friendly_name: call-router
anchorsite_override: Amsterdam, Netherlands
dtmf_type: Inband
first_command_timeout: true
first_command_timeout_secs: 10
voice_url: https://example.com
voice_fallback_url: https://fallback.example.com
call_cost_in_webhooks: false
voice_method: get
status_callback: https://example.com
status_callback_method: get
tags:
- tag1
- tag2
inbound:
channel_limit: 10
shaken_stir_enabled: true
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
created_at: '2020-02-02T22:25:27.521Z'
updated_at: '2020-02-03T22:25:27.521Z'
TexmlBidirectionalStreamCodec:
type: string
title: Stream Bidirectional Codec
description: Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp.
Case sensitive.
enum:
- PCMU
- PCMA
- G722
default: PCMU
example: G722
TexmlBidirectionalStreamMode:
type: string
title: Stream Bidirectional Mode
description: Configures method of bidirectional streaming (mp3, rtp).
enum:
- mp3
- rtp
default: mp3
example: rtp
TexmlCallAmdWebhookSchema:
type: object
title: TeXML Call AMD Webhook
description: Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
AnsweredBy:
type: string
description: The result of the answering machine detection.
enum:
- human
- machine_start
- machine_end_beep
- machine_end_silence
- machine_end_other
- fax
- unknown
example: human
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
MachineDetectionDuration:
type: string
description: The duration of the machine detection in milliseconds.
example: '2500'
required:
- AccountSid
- AnsweredBy
- CallSid
- CallSidLegacy
- ConnectionId
- MachineDetectionDuration
TexmlCallAnsweredWebhookSchema:
type: object
title: TeXML Call Answered Webhook
description: Webhook sent when a TeXML call is answered.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallDuration:
type: string
description: The duration of the call in seconds (conditional, only present if start_time and end_time are available).
example: '15'
CallInitiatedAt:
type: string
format: date-time
description: The timestamp when the call was initiated.
example: '2024-01-15T10:30:26.028Z'
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus:
type: string
description: The status of the call.
enum:
- in-progress
example: in-progress
CallbackSource:
type: string
description: The source of the callback.
enum:
- call-progress-events
example: call-progress-events
CallerId:
type: string
description: The display name of the caller.
example: John Doe
Codec:
type: string
description: The audio codec used for the call (conditional).
example: PCMU
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
ErrorCode:
type: string
description: Error code if an error occurred (conditional).
example: '10001'
ErrorMessage:
type: string
description: Error message if an error occurred (conditional).
example: Call failed
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
ParentCallSid:
type: string
description: The unique identifier of the parent call (conditional, only present for outbound calls initiated via
Dial).
example: v3:parent-call-id
ParentCallSidLegacy:
type: string
description: Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls
initiated via Dial).
example: v3:parent-call-id
SamplingRate:
type: string
description: The audio sampling rate (conditional).
example: '8000'
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '2'
ShakenStirAttestation:
type: string
description: SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).
example: A
ShakenStirValidated:
type: boolean
description: Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).
example: 'true'
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:30:00Z'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
required:
- AccountSid
- CallInitiatedAt
- CallSid
- CallSidLegacy
- CallStatus
- From
- To
- ConnectionId
- Timestamp
- CallbackSource
- SequenceNumber
TexmlCallCompletedWebhookSchema:
type: object
title: TeXML Call Completed Webhook
description: Webhook sent when a TeXML call is completed.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
AnsweredTime:
type: string
format: date-time
description: The time when the call was answered (only present when CallStatus is 'completed').
example: '2024-01-15T10:30:15Z'
CallControlId:
type: string
description: The call control ID (only present when CallStatus is 'completed').
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallDuration:
type: string
description: The duration of the call in seconds (conditional, only present if start_time and end_time are available).
example: '45'
CallInitiatedAt:
type: string
format: date-time
description: The timestamp when the call was initiated.
example: '2024-01-15T10:30:26.028Z'
CallLegId:
type: string
description: The call leg ID (only present when CallStatus is 'completed').
example: abc123-leg1
CallQualityStats:
type: string
description: JSON-encoded call quality statistics (only present when CallStatus is 'completed').
example: '{"mos":4.2,"jitter":10,"packet_loss":0.5}'
CallSessionId:
type: string
description: The call session ID (only present when CallStatus is 'completed').
example: session-abc123
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus:
type: string
description: The status of the call.
enum:
- completed
- busy
- no-answer
- canceled
- failed
example: completed
CallbackSource:
type: string
description: The source of the callback.
enum:
- call-progress-events
example: call-progress-events
CallerId:
type: string
description: The display name of the caller.
example: John Doe
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
DialCallDuration:
type: string
description: The duration of the dialed call in seconds (conditional, only present in hangup action callbacks for
Dial).
example: '120'
DialCallSid:
type: string
description: The unique identifier of the dialed call (conditional, only present in hangup action callbacks for
Dial).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
DialCallSidLegacy:
type: string
description: Legacy dialed call identifier, same as DialCallSid (conditional, only present in hangup action callbacks
for Dial).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
DialCallStatus:
type: string
description: The status of the dialed call (conditional, only present in hangup action callbacks for Dial).
enum:
- completed
- busy
- no-answer
- canceled
- failed
example: completed
EndTime:
type: string
format: date-time
description: The time when the call ended (only present when CallStatus is 'completed').
example: '2024-01-15T10:31:00Z'
ErrorCode:
type: string
description: Error code if an error occurred (conditional).
example: '10001'
ErrorMessage:
type: string
description: Error message if an error occurred (conditional).
example: Call failed
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
HangupCause:
type: string
description: The reason for call hangup (only present when CallStatus is 'completed').
example: normal_clearing
HangupSource:
type: string
description: The source of the hangup (conditional, only present for hangup events).
example: caller
OccurredAt:
type: string
format: date-time
description: The timestamp when the event occurred (only present when CallStatus is 'completed').
example: '2024-01-15T10:31:00Z'
OrganizationId:
type: string
description: The organization ID (only present when CallStatus is 'completed').
example: org-abc123
ParentCallSid:
type: string
description: The unique identifier of the parent call that initiated this outbound call (conditional, only present
for outbound calls initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy:
type: string
description: Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls
initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
RecordingDuration:
type: string
description: The duration of the recording in seconds (conditional, only present if recording was enabled).
example: '90'
RecordingUrl:
type: string
description: The URL where the call recording can be accessed (conditional, only present if recording was enabled).
example: https://api.telnyx.com/v2/recordings/abc123.wav
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '3'
ShakenStirAttestation:
type: string
description: SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).
example: A
ShakenStirValidated:
type: boolean
description: Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).
example: 'true'
SipHangupCause:
type: string
description: The SIP hangup cause code (conditional, only present for hangup events).
example: '200'
StartTime:
type: string
format: date-time
description: The time when the call started (only present when CallStatus is 'completed').
example: '2024-01-15T10:30:00Z'
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:30:00Z'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
UserId:
type: string
description: The user ID (only present when CallStatus is 'completed').
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
required:
- AccountSid
- CallInitiatedAt
- CallSid
- CallSidLegacy
- CallStatus
- From
- To
- ConnectionId
- Timestamp
- CallbackSource
- SequenceNumber
TexmlCallDtmfWebhookSchema:
type: object
title: TeXML Call DTMF Webhook
description: Webhook sent when a DTMF digit is received during a TeXML call.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallInitiatedAt:
type: string
format: date-time
description: The timestamp when the call was initiated.
example: '2024-01-15T10:30:26.028Z'
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus:
type: string
description: The status of the call.
enum:
- dtmf
example: dtmf
CallbackSource:
type: string
description: The source of the callback.
enum:
- call-progress-events
example: call-progress-events
CallerId:
type: string
description: The display name of the caller.
example: John Doe
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
Digit:
type: string
description: The DTMF digit that was pressed (0-9, *,
example: '5'
ErrorCode:
type: string
description: Error code if an error occurred (conditional).
example: '10001'
ErrorMessage:
type: string
description: Error message if an error occurred (conditional).
example: Call failed
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
ParentCallSid:
type: string
description: The unique identifier of the parent call (conditional, only present for outbound calls initiated via
Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy:
type: string
description: Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls
initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '3'
ShakenStirAttestation:
type: string
description: SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).
example: A
ShakenStirValidated:
type: boolean
description: Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).
example: 'true'
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:30:00Z'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
required:
- AccountSid
- CallInitiatedAt
- CallSid
- CallSidLegacy
- CallStatus
- From
- To
- ConnectionId
- Timestamp
- CallbackSource
- SequenceNumber
- Digit
TexmlCallInitiatedWebhookSchema:
type: object
title: TeXML Call Initiated Webhook
description: Webhook sent when a TeXML call is initiated.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallInitiatedAt:
type: string
format: date-time
description: The timestamp when the call was initiated.
example: '2024-01-15T10:30:26.028Z'
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus:
type: string
description: The status of the call.
enum:
- initiated
example: initiated
CallbackSource:
type: string
description: The source of the callback.
enum:
- call-progress-events
example: call-progress-events
CallerId:
type: string
description: The display name of the caller.
example: John Doe
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
ErrorCode:
type: string
description: Error code if an error occurred (conditional).
example: '10001'
ErrorMessage:
type: string
description: Error message if an error occurred (conditional).
example: Call failed
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
ParentCallSid:
type: string
description: The unique identifier of the parent call that initiated this outbound call (conditional, only present
for outbound calls initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy:
type: string
description: Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls
initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '0'
ShakenStirAttestation:
type: string
description: SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).
example: A
ShakenStirValidated:
type: boolean
description: Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).
example: 'true'
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:30:00Z'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
required:
- AccountSid
- CallInitiatedAt
- CallSid
- CallSidLegacy
- CallStatus
- From
- To
- ConnectionId
- Timestamp
- CallbackSource
- SequenceNumber
TexmlCallRingingWebhookSchema:
type: object
title: TeXML Call Ringing Webhook
description: Webhook sent when a TeXML call is ringing.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallDuration:
type: string
description: The duration of the call in seconds (conditional, only present if start_time and end_time are available).
example: '10'
CallInitiatedAt:
type: string
format: date-time
description: The timestamp when the call was initiated.
example: '2024-01-15T10:30:26.028Z'
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus:
type: string
description: The status of the call.
enum:
- ringing
example: ringing
CallbackSource:
type: string
description: The source of the callback.
enum:
- call-progress-events
example: call-progress-events
CallerId:
type: string
description: The display name of the caller.
example: John Doe
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
ErrorCode:
type: string
description: Error code if an error occurred (conditional).
example: '10001'
ErrorMessage:
type: string
description: Error message if an error occurred (conditional).
example: Call failed
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
ParentCallSid:
type: string
description: The unique identifier of the parent call that initiated this outbound call (conditional, only present
for outbound calls initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy:
type: string
description: Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls
initiated via Dial).
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '1'
ShakenStirAttestation:
type: string
description: SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).
example: A
ShakenStirValidated:
type: boolean
description: Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).
example: 'true'
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:30:00Z'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
required:
- AccountSid
- CallInitiatedAt
- CallSid
- CallSidLegacy
- CallStatus
- From
- To
- ConnectionId
- Timestamp
- CallbackSource
- SequenceNumber
TexmlConferenceEndWebhookSchema:
type: object
title: TeXML Conference End Webhook
description: Webhook sent when a TeXML conference ends.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType:
type: string
description: The type of calling party (conditional, only present if available in event).
example: customer
ConferenceSid:
type: string
description: The unique identifier of the conference.
example: conf_abc123def456
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
FriendlyName:
type: string
description: The friendly name of the conference.
example: MyConference
From:
type: string
description: The phone number or SIP address of the caller (conditional, only present if available in event).
example: '+35319605860'
FromSipUri:
type: string
description: The SIP URI of the caller (conditional, only present if available in event).
example: sip:user@example.com
ParticipantLabel:
type: string
description: The label of the participant (conditional, only present if available in event).
example: participant-1
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '5'
StatusCallbackEvent:
type: string
description: The event that triggered the callback.
enum:
- conference-end
example: conference-end
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T11:30:00Z'
To:
type: string
description: The phone number or SIP address that was called (conditional, only present if available in event).
example: '+13129457420'
ToSipUri:
type: string
description: The SIP URI of the callee (conditional, only present if available in event).
example: sip:conference@example.com
required:
- ConferenceSid
- FriendlyName
- AccountSid
- ConnectionId
- SequenceNumber
- Timestamp
- StatusCallbackEvent
- CallSid
- CallSidLegacy
TexmlConferenceJoinWebhookSchema:
type: object
title: TeXML Conference Join Webhook
description: Webhook sent when a participant joins a TeXML conference.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call that joined.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType:
type: string
description: The type of calling party (conditional, only present if available in event).
example: customer
ConferenceSid:
type: string
description: The unique identifier of the conference.
example: conf_abc123def456
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
FriendlyName:
type: string
description: The friendly name of the conference.
example: MyConference
From:
type: string
description: The phone number or SIP address of the caller (conditional, only present if available in event).
example: '+35319605860'
FromSipUri:
type: string
description: The SIP URI of the caller (conditional, only present if available in event).
example: sip:user@example.com
ParticipantLabel:
type: string
description: The label of the participant (conditional, only present if available in event).
example: participant-1
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '2'
StatusCallbackEvent:
type: string
description: The event that triggered the callback.
enum:
- participant-join
example: participant-join
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:31:00Z'
To:
type: string
description: The phone number or SIP address that was called (conditional, only present if available in event).
example: '+13129457420'
ToSipUri:
type: string
description: The SIP URI of the callee (conditional, only present if available in event).
example: sip:conference@example.com
required:
- ConferenceSid
- FriendlyName
- AccountSid
- ConnectionId
- SequenceNumber
- Timestamp
- StatusCallbackEvent
- CallSid
- CallSidLegacy
TexmlConferenceLeaveWebhookSchema:
type: object
title: TeXML Conference Leave Webhook
description: Webhook sent when a participant leaves a TeXML conference.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call that left.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType:
type: string
description: The type of calling party (conditional, only present if available in event).
example: customer
ConferenceSid:
type: string
description: The unique identifier of the conference.
example: conf_abc123def456
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
FriendlyName:
type: string
description: The friendly name of the conference.
example: MyConference
From:
type: string
description: The phone number or SIP address of the caller (conditional, only present if available in event).
example: '+35319605860'
FromSipUri:
type: string
description: The SIP URI of the caller (conditional, only present if available in event).
example: sip:user@example.com
ParticipantLabel:
type: string
description: The label of the participant (conditional, only present if available in event).
example: participant-1
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '4'
StatusCallbackEvent:
type: string
description: The event that triggered the callback.
enum:
- participant-leave
example: participant-leave
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T11:00:00Z'
To:
type: string
description: The phone number or SIP address that was called (conditional, only present if available in event).
example: '+13129457420'
ToSipUri:
type: string
description: The SIP URI of the callee (conditional, only present if available in event).
example: sip:conference@example.com
required:
- ConferenceSid
- FriendlyName
- AccountSid
- ConnectionId
- SequenceNumber
- Timestamp
- StatusCallbackEvent
- CallSid
- CallSidLegacy
TexmlConferenceSpeakerWebhookSchema:
type: object
title: TeXML Conference Speaker Webhook
description: Webhook sent when a participant starts or stops speaking in a TeXML conference.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call that is speaking.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType:
type: string
description: The type of calling party (conditional, only present if available in event).
example: customer
ConferenceSid:
type: string
description: The unique identifier of the conference.
example: conf_abc123def456
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
FriendlyName:
type: string
description: The friendly name of the conference.
example: MyConference
From:
type: string
description: The phone number or SIP address of the caller (conditional, only present if available in event).
example: '+35319605860'
FromSipUri:
type: string
description: The SIP URI of the caller (conditional, only present if available in event).
example: sip:user@example.com
ParticipantLabel:
type: string
description: The label of the participant (conditional, only present if available in event).
example: participant-1
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '3'
StatusCallbackEvent:
type: string
description: The event that triggered the callback.
enum:
- participant-speech-start
- participant-speech-stop
example: participant-speech-start
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:35:00Z'
To:
type: string
description: The phone number or SIP address that was called (conditional, only present if available in event).
example: '+13129457420'
ToSipUri:
type: string
description: The SIP URI of the callee (conditional, only present if available in event).
example: sip:conference@example.com
required:
- ConferenceSid
- FriendlyName
- AccountSid
- ConnectionId
- SequenceNumber
- Timestamp
- StatusCallbackEvent
- CallSid
- CallSidLegacy
TexmlConferenceStartWebhookSchema:
type: object
title: TeXML Conference Start Webhook
description: Webhook sent when a TeXML conference starts.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType:
type: string
description: The type of calling party (conditional, only present if available in event).
example: customer
ConferenceSid:
type: string
description: The unique identifier of the conference.
example: conf_abc123def456
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
FriendlyName:
type: string
description: The friendly name of the conference.
example: MyConference
From:
type: string
description: The phone number or SIP address of the caller (conditional, only present if available in event).
example: '+35319605860'
FromSipUri:
type: string
description: The SIP URI of the caller (conditional, only present if available in event).
example: sip:user@example.com
ParticipantLabel:
type: string
description: The label of the participant (conditional, only present if available in event).
example: participant-1
SequenceNumber:
type: integer
description: The sequence number of the event.
example: '0'
StatusCallbackEvent:
type: string
description: The event that triggered the callback.
enum:
- conference-start
example: conference-start
Timestamp:
type: string
format: date-time
description: The UTC timestamp when the webhook was generated.
example: '2024-01-15T10:30:00Z'
To:
type: string
description: The phone number or SIP address that was called (conditional, only present if available in event).
example: '+13129457420'
ToSipUri:
type: string
description: The SIP URI of the callee (conditional, only present if available in event).
example: sip:conference@example.com
required:
- ConferenceSid
- FriendlyName
- AccountSid
- ConnectionId
- SequenceNumber
- Timestamp
- StatusCallbackEvent
- CallSid
- CallSidLegacy
TexmlCreateCallRecordingRequestBody:
type: object
title: Texml Create Call Recording Request Body
properties:
PlayBeep:
$ref: '#/components/schemas/PlayBeep'
RecordingStatusCallbackEvent:
$ref: '#/components/schemas/RecordingStatusCallbackEvent'
RecordingStatusCallback:
$ref: '#/components/schemas/TexmlStatusCallback'
RecordingStatusCallbackMethod:
$ref: '#/components/schemas/TexmlStatusCallbackMethod'
RecordingChannels:
$ref: '#/components/schemas/TexmlRecordingChannels'
RecordingTrack:
$ref: '#/components/schemas/RecordingTrack'
SendRecordingUrl:
$ref: '#/components/schemas/SendRecordingUrl'
TexmlCreateCallRecordingResponseBody:
type: object
title: Texml Create Call Recording Response Body
properties:
account_sid:
$ref: '#/components/schemas/AccountSid'
call_sid:
$ref: '#/components/schemas/CallControlId'
conference_sid:
$ref: '#/components/schemas/ConferenceSid'
channels:
$ref: '#/components/schemas/TwimlRecordingChannels'
date_created:
$ref: '#/components/schemas/DateTimeRFC2822'
date_updated:
$ref: '#/components/schemas/DateTimeRFC2822'
start_time:
$ref: '#/components/schemas/DateTimeRFC2822'
price:
$ref: '#/components/schemas/TexmlRecordingPrice'
price_unit:
$ref: '#/components/schemas/TexmlPriceUnit'
duration:
$ref: '#/components/schemas/TexmlRecordingDuration'
sid:
$ref: '#/components/schemas/TexmlSid'
source:
$ref: '#/components/schemas/RecordingSource'
error_code:
$ref: '#/components/schemas/TexmlErrorCode'
track:
$ref: '#/components/schemas/RecordingTrack'
uri:
type: string
description: The relative URI for this recording resource.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA/Recordings/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json
TexmlCreateCallStreamingRequestBody:
type: object
title: Texml Create Call Streaming Request Body
properties:
StatusCallback:
$ref: '#/components/schemas/TexmlStatusCallback'
StatusCallbackMethod:
$ref: '#/components/schemas/TexmlStatusCallbackMethod'
Track:
$ref: '#/components/schemas/StreamTrack'
Name:
$ref: '#/components/schemas/StreamName'
BidirectionalMode:
$ref: '#/components/schemas/TexmlBidirectionalStreamMode'
BidirectionalCodec:
$ref: '#/components/schemas/TexmlBidirectionalStreamCodec'
Url:
$ref: '#/components/schemas/TexmlStreamUrl'
TexmlCreateCallStreamingResponseBody:
type: object
title: Texml Create Call Streaming Response Body
properties:
account_sid:
$ref: '#/components/schemas/AccountSid'
call_sid:
$ref: '#/components/schemas/CallControlId'
sid:
$ref: '#/components/schemas/TexmlSid'
name:
type: string
description: The user specified name of Stream.
example: My stream
status:
type: string
description: The status of the streaming.
enum:
- in-progress
example: in-progress
date_updated:
$ref: '#/components/schemas/DateTimeRFC2822'
uri:
type: string
description: The relative URI for this streaming resource.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA/Streams/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json
TexmlCreateSiprecSessionRequestBody:
type: object
title: Create Siprec Session Request
properties:
ConnectorName:
description: The name of the connector to use for the SIPREC session.
example: my_connector
type: string
Name:
description: Name of the SIPREC session. May be used to stop the SIPREC session from TeXML instruction.
example: my_siprec_session
type: string
Track:
description: The track to be used for siprec session. Can be `both_tracks`, `inbound_track` or `outbound_track`.
Defaults to `both_tracks`.
example: both_tracks
type: string
enum:
- both_tracks
- inbound_track
- outbound_track
IncludeMetadataCustomHeaders:
description: When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise,
they’ll be added to sip headers.
example: true
type: boolean
enum:
- true
- false
Secure:
description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure
SRS port in your connector to 5061.
example: true
type: boolean
enum:
- true
- false
SessionTimeoutSecs:
description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for
session keep alive. Minimum value is 90, set to 0 to disable.
example: 900
type: integer
default: 1800
SipTransport:
description: Specifies SIP transport protocol.
example: tcp
enum:
- udp
- tcp
- tls
type: string
default: udp
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the siprec session.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
type: string
enum:
- GET
- POST
TexmlCreateSiprecSessionResponseBody:
type: object
title: Create Siprec Session Response
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
call_sid:
type: string
description: The id of the call the resource belongs to.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
sid:
description: The SID of the siprec session.
example: 61bf923e-5e4d-4595-a110-56190ea18123
type: string
date_created:
description: The date and time the siprec session was created.
example: Fri, 11 Aug 2023 19:12:11 +0000
type: string
date_updated:
description: The date and time the siprec session was last updated.
example: Fri, 11 Aug 2023 19:12:11 +0000
type: string
start_time:
description: The date and time the siprec session was started.
example: Fri, 11 Aug 2023 19:12:11 +0000
type: string
status:
description: The status of the siprec session.
example: in-progress
type: string
enum:
- in-progress
- stopped
track:
description: The track used for the siprec session.
example: both_tracks
type: string
enum:
- both_tracks
- inbound_track
- outbound_track
uri:
description: The URI of the siprec session.
example: https://api.telnyx.com/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18123/Calls/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-ai/Siprec/61bf923e-5e4d-4595-a110-56190ea18123
type: string
error_code:
description: The error code of the siprec session.
type: string
TexmlErrorCode:
type:
- string
- 'null'
example: null
TexmlGatherWebhookSchema:
type: object
title: TeXML Gather Webhook
description: Webhook sent when a Gather command completes (sent to the action URL).
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w
Confidence:
type: number
description: The average confidence score of the speech transcription (conditional, only present when input is speech).
example: '0.95'
Digits:
type: string
description: The DTMF digits collected by the Gather command (conditional, only present when input is dtmf).
example: '1'
From:
type: string
description: The phone number or SIP address of the caller.
example: Defaultj35z6@sip.telnyx.com
SpeechResult:
type: string
description: The transcribed text from speech input (conditional, only present when input is speech).
example: Please connect me to sales
To:
type: string
description: The phone number or SIP address that was called.
example: '+12132045020'
required:
- AccountSid
- CallSid
- CallSidLegacy
- From
- To
TexmlGetCallRecordingResponseBody:
type: object
title: Texml Get Call Recording Response Body
properties:
account_sid:
$ref: '#/components/schemas/AccountSid'
call_sid:
$ref: '#/components/schemas/CallControlId'
conference_sid:
$ref: '#/components/schemas/ConferenceSid'
channels:
$ref: '#/components/schemas/TwimlRecordingChannels'
date_created:
$ref: '#/components/schemas/DateTimeRFC2822'
date_updated:
$ref: '#/components/schemas/DateTimeRFC2822'
start_time:
$ref: '#/components/schemas/DateTimeRFC2822'
duration:
$ref: '#/components/schemas/TexmlRecordingDuration'
sid:
$ref: '#/components/schemas/TexmlSid'
source:
$ref: '#/components/schemas/RecordingSource'
status:
$ref: '#/components/schemas/TexmlRecordingStatus'
error_code:
$ref: '#/components/schemas/TexmlErrorCode'
subresources_uris:
$ref: '#/components/schemas/TexmlRecordingSubresourcesUris'
uri:
type: string
description: The relative URI for this recording resource.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json
media_url:
$ref: '#/components/schemas/TexmlRecordingMediaUrl'
TexmlGetCallRecordingsResponseBody:
type: object
title: Multiple recording resources
properties:
recordings:
type: array
items:
$ref: '#/components/schemas/TexmlGetCallRecordingResponseBody'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: 19
first_page_uri:
type: string
format: uri
description: Relative uri to the first page of the query results
previous_page_uri:
type: string
format: uri
description: Relative uri to the previous page of the query results
next_page_uri:
type: string
description: Relative uri to the next page of the query results
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1
page:
type: integer
description: Current page number, zero-indexed.
example: 0
page_size:
type: integer
description: The number of items on the page
example: 20
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: 0
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings.json?Page=0&PageSize=1
TexmlHttpRequestWebhookSchema:
type: object
title: TeXML HTTP Request Webhook
description: Webhook sent to the action URL after an HttpRequest instruction completes (when async="false"). This webhook
contains standard call parameters plus any custom fields extracted from the HTTP response via Field mappings defined
in the Response/Content section.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallerId:
type: string
description: The display name of the caller (conditional, only present if caller_id_name is set).
example: John Doe
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
additionalProperties: true
required:
- AccountSid
- CallSid
- CallSidLegacy
- From
- To
- ConnectionId
TexmlPriceUnit:
type:
- string
- 'null'
description: The unit in which the price is given.
example: USD
TexmlQueueWebhookSchema:
type: object
title: TeXML Queue Webhook
description: Webhook sent for queue status events (triggered by Enqueue command waitUrl).
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: 4e71926f-8f13-450e-b91c-23c2ef786aa6
AvgQueueTime:
type: string
description: The average wait time in seconds for the queue.
example: '45'
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
CurrentQueueSize:
type: string
description: The current number of calls in the queue.
example: '3'
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
QueuePosition:
type: string
description: The current position of the call in the queue.
example: '2'
QueueSid:
type: string
description: The unique identifier of the queue.
example: my-queue
QueueTime:
type: string
description: The time in seconds the call has been in the queue.
example: '30'
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
required:
- AccountSid
- CallSid
- CallSidLegacy
- From
- To
- ConnectionId
- QueueSid
- QueuePosition
- CurrentQueueSize
- QueueTime
- AvgQueueTime
TexmlRecordingChannels:
type: string
enum:
- single
- dual
description: When `dual`, final audio file has the first leg on channel A, and the rest on channel B. `single` mixes
both tracks into a single channel.
example: single
default: dual
TexmlRecordingCompletedWebhookSchema:
type: object
title: TeXML Recording Completed Webhook
description: Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent).
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
RecordingChannels:
type: integer
description: The number of channels in the recording (1 for mono, 2 for dual-channel).
enum:
- 1
- 2
example: 1
RecordingDuration:
type: string
description: The duration of the recording in seconds.
example: '5'
RecordingSid:
type: string
description: A unique identifier for the recording, generated by Telnyx.
example: 35094891-3290-4142-b2c2-b2eda57534cf
RecordingSource:
type: string
description: The source of the recording.
example: DialVerb
RecordingStatus:
type: string
description: The status of the recording.
enum:
- completed
example: completed
RecordingUrl:
type: string
description: The URL where the recording can be accessed (conditional, only present if recording URL is available).
example: https://recording.com/your-recording-url
required:
- AccountSid
- CallSid
- CallSidLegacy
- ConnectionId
- RecordingChannels
- RecordingDuration
- RecordingSid
- RecordingSource
- RecordingStatus
TexmlRecordingDuration:
type:
- string
- 'null'
description: The duration of this recording, given in seconds.
example: '12'
TexmlRecordingInProgressWebhookSchema:
type: object
title: TeXML Recording In-Progress Webhook
description: Webhook sent when a recording starts during a TeXML call (triggered by recordingStatusCallbackEvent).
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
ConnectionId:
type: string
description: The unique identifier of the connection.
example: '1234567890'
RecordingChannels:
type: integer
description: The number of channels in the recording (1 for mono, 2 for dual-channel).
enum:
- 1
- 2
example: 1
RecordingSid:
type: string
description: A unique identifier for the recording, generated by Telnyx (conditional, only present if recording_id
is available).
example: 35094891-3290-4142-b2c2-b2eda57534cf
RecordingSource:
type: string
description: The source of the recording.
example: DialVerb
RecordingStatus:
type: string
description: The status of the recording.
enum:
- in-progress
example: in-progress
required:
- AccountSid
- CallSid
- CallSidLegacy
- ConnectionId
- RecordingChannels
- RecordingSource
- RecordingStatus
TexmlRecordingMediaUrl:
type: string
format: uri
example: http://recordings.com/mp3/filename.mp3
TexmlRecordingPrice:
type:
- string
- 'null'
description: 'The price of this recording, the currency is specified in the price_unit field. '
example: '0.10'
TexmlRecordingStatus:
type: string
enum:
- in-progress
- completed
- paused
- stopped
example: paused
TexmlRecordingSubresourcesUris:
type: object
title: Texml recording subresources uris
description: Subresources details for a recording if available.
properties:
transcriptions:
type:
- string
- 'null'
format: uri
TexmlRecordingTranscription:
type: object
title: Texml Get Call Recording Transcription Response Body
properties:
account_sid:
$ref: '#/components/schemas/AccountSid'
call_sid:
$ref: '#/components/schemas/CallControlId'
api_version:
type: string
description: The version of the API that was used to make the request.
example: '2010-04-01'
date_created:
$ref: '#/components/schemas/DateTimeRFC2822'
date_updated:
$ref: '#/components/schemas/DateTimeRFC2822'
duration:
$ref: '#/components/schemas/TexmlRecordingDuration'
sid:
$ref: '#/components/schemas/TexmlSid'
recording_sid:
$ref: '#/components/schemas/TexmlSid'
status:
type: string
description: The status of the recording transcriptions. The transcription text will be available only when the
status is completed.
enum:
- in-progress
- completed
example: completed
transcription_text:
type: string
description: The recording's transcribed text
example: Good morning, how may I help you?
uri:
type: string
description: The relative URI for the recording transcription resource.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Transcriptions/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json
TexmlReferStatusWebhookSchema:
type: object
title: TeXML Refer Status Webhook
description: Webhook sent for SIP REFER status updates.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
NotifySipResponseCode:
type: string
description: The SIP response code from the NOTIFY message (conditional, only present on success).
example: '200'
ReferCallStatus:
type: string
description: The status of the SIP REFER operation.
enum:
- failed
- in-progress
- busy
- canceled
example: in-progress
ReferSipResponseCode:
type: string
description: The SIP response code from the REFER message (conditional, only present on success).
example: '202'
Timestamp:
type: string
format: date-time
description: The timestamp when the event occurred.
example: '2024-01-15T10:30:00Z'
required:
- AccountSid
- CallSid
- CallSidLegacy
- ReferCallStatus
- Timestamp
TexmlSid:
type: string
description: Identifier of a resource.
example: e9cea0be-7dbd-4b98-98b1-c0089d9d43b0
TexmlSiprecWebhookSchema:
type: object
title: TeXML SIPREC Webhook
description: Webhook sent for SIPREC session status updates.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
SiprecError:
type: string
description: Error detail if the SIPREC session failed (conditional, only present when SiprecEvent is siprec-failed).
example: SIPREC connection failed
SiprecEvent:
type: string
description: The event type for the SIPREC session.
enum:
- siprec-started
- siprec-stopped
- siprec-failed
example: siprec-started
SiprecSid:
type: string
description: A unique identifier for the SIPREC session.
example: siprec-abc123
Timestamp:
type: string
format: date-time
description: The timestamp when the event occurred.
example: '2024-01-15T10:30:00Z'
required:
- AccountSid
- CallSid
- SiprecEvent
- SiprecSid
- Timestamp
TexmlStatusCallback:
description: Url where status callbacks will be sent.
example: http://webhook.com/callback
type: string
format: uri
TexmlStatusCallbackMethod:
description: HTTP method used to send status callbacks.
example: GET
type: string
default: POST
enum:
- GET
- POST
TexmlStreamUrl:
type: string
title: Stream destination URL
description: The destination WebSocket address where the stream is going to be delivered.
example: wss://www.example.com/websocket
TexmlStreamWebhookSchema:
type: object
title: TeXML Stream Webhook
description: Webhook sent for media streaming status updates.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
StreamError:
type: string
description: Error message if the stream failed (conditional, only present when StreamEvent is stream-error).
example: Connection timeout
StreamEvent:
type: string
description: The event type for the media stream.
enum:
- stream-started
- stream-stopped
- stream-error
example: stream-started
StreamName:
type: string
description: The name of the stream.
example: my_stream
StreamSid:
type: string
description: A unique identifier for the stream.
example: stream-abc123
Timestamp:
type: string
format: date-time
description: The timestamp when the event occurred.
example: '2024-01-15T10:30:00Z'
required:
- AccountSid
- CallSid
- CallSidLegacy
- StreamSid
- StreamEvent
- StreamName
- Timestamp
TexmlTranscriptionWebhookSchema:
type: object
title: TeXML Transcription Webhook
description: Webhook sent when a recording transcription is completed.
properties:
AccountSid:
type: string
description: The unique identifier of the account (user_id).
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
CallSid:
type: string
description: The unique identifier of the call (call_control_id).
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy:
type: string
description: Legacy call identifier, same as CallSid.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus:
type: string
description: The status of the call.
example: in-progress
From:
type: string
description: The phone number or SIP address of the caller.
example: '+35319605860'
RecordingSid:
type: string
description: A unique identifier for the recording that was transcribed.
example: 35094891-3290-4142-b2c2-b2eda57534cf
RecordingUrl:
type: string
description: The URL where the recording can be accessed.
example: https://api.telnyx.com/v2/recordings/abc123.wav
To:
type: string
description: The phone number or SIP address that was called.
example: '+13129457420'
TranscriptionSid:
type: string
description: A unique identifier for the transcription.
example: b08f0fa1-a32c-4218-b3b5-9cf78941ccac
TranscriptionStatus:
type: string
description: The status of the transcription.
example: completed
TranscriptionText:
type: string
description: The transcribed text from the recording.
example: Good morning, how may I help you?
required:
- AccountSid
- CallSid
- CallSidLegacy
- CallStatus
- From
- To
- RecordingSid
- RecordingUrl
- TranscriptionStatus
- TranscriptionSid
- TranscriptionText
TexmlUpdateCallRecordingRequestBody:
type: object
title: Texml Create Call Recording Request Body
properties:
Status:
type: string
enum:
- in-progress
- paused
- stopped
example: paused
TexmlUpdateCallStreamingRequestBody:
type: object
title: Texml Update Call Streaming Request Body
properties:
Status:
$ref: '#/components/schemas/StreamStatus'
TexmlUpdateCallStreamingResponseBody:
type: object
title: Texml Update Call Streaming Response Body
properties:
account_sid:
$ref: '#/components/schemas/AccountSid'
call_sid:
$ref: '#/components/schemas/CallControlId'
sid:
$ref: '#/components/schemas/TexmlSid'
status:
type: string
description: The status of the streaming.
enum:
- stopped
example: stopped
date_updated:
$ref: '#/components/schemas/DateTimeRFC2822'
uri:
type: string
description: The relative URI for this streaming resource.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls/v3:KBnLO0ZK3DhKM5s7bE9VluaSmKsOchKht_fUYvxcp8ysbmzCCtpkmA/Streams/b08f0fa1-a32c-4218-b3b5-9cf78941ccac.json
TexmlUpdateSiprecSessionRequestBody:
type: object
title: Update Siprec Session Request
properties:
Status:
description: The new status of the resource. Specifying `stopped` will end the siprec session.
example: stopped
enum:
- stopped
type: string
TexmlUpdateSiprecSessionResponseBody:
type: object
title: Update Siprec Session Response
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
call_sid:
type: string
description: The id of the call the resource belongs to.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
sid:
description: The SID of the siprec session.
example: 61bf923e-5e4d-4595-a110-56190ea18123
type: string
date_updated:
description: The date and time the siprec session was last updated.
example: Fri, 11 Aug 2023 19:12:11 +0000
type: string
status:
description: The status of the siprec session.
example: in-progress
type: string
enum:
- in-progress
- stopped
uri:
description: The URI of the siprec session.
example: https://api.telnyx.com/v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18123/Calls/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-ai/Siprec/61bf923e-5e4d-4595-a110-56190ea18123
type: string
error_code:
description: The error code of the siprec session.
type: string
TextClusteringResponse:
properties:
task_id:
type: string
type: object
required:
- task_id
title: TextClusteringResponse
TextClusteringResponseData:
properties:
data:
$ref: '#/components/schemas/TextClusteringResponse'
type: object
required:
- data
title: TextClusteringResponseData
ThreadMessage:
type: object
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_message
direction:
type: string
enum:
- inbound
- outbound
status:
type: string
description: Received for inbound messages; the current send status for outbound messages.
inbox_id:
type: string
format: uuid
thread_id:
type: string
format: uuid
message_id:
type: string
nullable: true
description: RFC Message-ID header. Null is possible for legacy outbound messages.
in_reply_to:
type: string
nullable: true
references:
type: array
description: Ordered RFC Message-ID values from the References header.
items:
type: string
from:
$ref: '#/components/schemas/InboundEmailAddress'
to:
type: array
items:
$ref: '#/components/schemas/InboundEmailAddress'
cc:
type: array
items:
$ref: '#/components/schemas/InboundEmailAddress'
bcc:
type: array
items:
$ref: '#/components/schemas/InboundEmailAddress'
reply_to:
type: array
items:
$ref: '#/components/schemas/InboundEmailAddress'
subject:
type: string
nullable: true
text_body_url:
type: string
format: uri
nullable: true
description: URL for an offloaded plain-text body. Null means the body is not offloaded to a URL; an inline plain-text
body may still exist but is not returned on list reads. `reply_text` and `has_quoted_text` are persisted during
ingest before any body offload.
html_body_url:
type: string
format: uri
nullable: true
description: URL for an offloaded HTML body. Null means the body is not offloaded to a URL; an inline HTML body
may still exist but is not returned on list reads. Reply extraction uses only the plain-text body during ingest.
reply_text:
type: string
nullable: true
description: Conservatively extracted new-reply content persisted from the plain-text body during ingest. Null means
no plain-text extraction input was available or extraction was skipped or failed; HTML bodies are not parsed.
has_quoted_text:
type: boolean
description: Whether conservative plain-text extraction detected a quoted tail. False does not prove that the source
contains no quoted content.
headers:
type: object
additionalProperties: true
inline_files:
type: array
items:
type: object
additionalProperties: true
attachments:
type: array
items:
type: object
additionalProperties: true
labels:
type: array
description: 'Mutable message labels used for agent workflow state (for example `spam`, `needs_review`, `processed`).
Distinct from the immutable send-time `tags` on outbound messages: labels are never propagated to Email Detail
Records or Mission Control reporting. Always empty for outbound messages. Labels on a message are independent
of the labels on its thread.'
items:
type: string
maxLength: 255
maxItems: 50
read_at:
type: string
format: date-time
nullable: true
description: Time the inbound message was marked read. Null means unread.
received_at:
type: string
format: date-time
nullable: true
description: Receipt time for inbound messages; null for outbound messages.
sent_at:
type: string
format: date-time
nullable: true
description: Creation/send-acceptance time for outbound messages; null for inbound messages.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- id
- record_type
- direction
- status
- inbox_id
- thread_id
- message_id
- in_reply_to
- references
- from
- to
- cc
- bcc
- reply_to
- subject
- text_body_url
- html_body_url
- reply_text
- has_quoted_text
- headers
- inline_files
- attachments
- labels
- read_at
- received_at
- sent_at
- created_at
- updated_at
TimeRange:
type: object
properties:
from:
type: string
format: date-time
nullable: true
to:
type: string
format: date-time
nullable: true
required:
- from
- to
TnReleaseEntry:
type: object
title: TnReleaseEntry
properties:
phone_number:
type: string
description: Phone number in E164 format.
number_id:
type: string
description: Phone number ID from the Telnyx API.
TnUploadEntry:
type: object
title: TnUploadEntry
properties:
number_id:
$ref: '#/components/schemas/UUID'
phone_number:
type: string
description: Phone number in E164 format.
status:
type: string
enum:
- pending_upload
- pending
- in_progress
- success
- error
description: Represents the status of the phone number entry upload on Microsoft Teams.
example: error
default: pending_upload
error_code:
type: string
enum:
- internal_error
- unable_to_retrieve_default_location
- unknown_country_code
- unable_to_retrieve_location
- unable_to_retrieve_partner_info
- unable_to_match_geography_entry
description: A code returned by Microsoft Teams if there is an error with the phone number entry upload.
example: internal_error
error_message:
type: string
description: A message returned by Microsoft Teams if there is an error with the upload process.
civic_address_id:
type: string
format: uuid
description: Identifies the civic address assigned to the phone number entry.
location_id:
type: string
format: uuid
description: Identifies the location assigned to the phone number entry.
internal_status:
type: string
enum:
- pending_assignment
- in_progress
- all_internal_jobs_completed
- release_requested
- release_completed
- error
description: Represents the status of the phone number entry upload on Telnyx.
example: error
default: pending_assignment
To:
description: The phone number, in E.164 format, the fax will be sent to or SIP URI
type: string
example: '+13127367276'
ToNumber:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
example: +E.164
x-format: address
TokenGroup:
type: object
additionalProperties: false
properties:
record_type:
const: token_group
id:
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
version:
type: integer
minimum: 1
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
- type: 'null'
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
rpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
allowed_models:
type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
cache_ttl:
anyOf:
- type: integer
minimum: 1
maximum: 86400
- type: 'null'
provider_key_ids:
type: array
items:
type: string
format: uuid
uniqueItems: true
maxItems: 1000
guardrails:
anyOf:
- type: object
additionalProperties: false
properties:
secrets:
type: object
additionalProperties: false
properties:
prompt:
type: string
enum:
- ignore
- flag
- block
response:
type: string
enum:
- ignore
- flag
- block
dlp:
type: object
additionalProperties: false
properties:
profiles:
type: array
items:
type: string
enum:
- financial
- government_id
- contact
uniqueItems: true
prompt:
type: string
enum:
- ignore
- flag
- block
response:
type: string
enum:
- ignore
- flag
- block
streaming:
type: string
enum:
- buffered
- passthrough
description: Per-group guardrail policy. Missing actions default to ignore. profiles may be listed with both dlp
actions ignore (staged, inactive) but a non-ignore dlp action requires at least one profile. streaming defaults
to buffered when any response action is block and passthrough otherwise; passthrough with a response block is
400. Findings are codes and counts only; content is never stored. The stored form is echoed back canonicalised
(all actions explicit, profiles sorted); {} is stored as an all-ignore policy, null disables.
- type: 'null'
fallbacks:
anyOf:
- type: object
maxProperties: 1000
additionalProperties:
type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
minItems: 1
maxItems: 3
uniqueItems: true
description: 'Per-group model fallbacks: primary alias -> ordered list of 1..3 other aliases. Every key and listed
alias must be in allowed_models (a PATCH removing a referenced alias is 400); a chain never lists its own key;
wildcards are rejected. Chains are one level deep (a step''s own chain is not expanded). Fallback is attempted
only for managed routes, only before the first provider event is forwarded, and only to steps the key may use;
each attempt is reserved and recorded. {} and null both disable fallbacks.'
- type: 'null'
retries:
anyOf:
- type: object
additionalProperties: false
properties:
max_attempts:
type: integer
minimum: 1
maximum: 5
retry_delay_ms:
type: integer
minimum: 0
maximum: 5000
default: 250
backoff:
type: string
enum:
- constant
- linear
- exponential
default: exponential
request_timeout_ms:
anyOf:
- type: integer
minimum: 1000
maximum: 60000
- type: 'null'
required:
- max_attempts
description: 'Per-group same-route retries. max_attempts counts the first try of each step (the primary and each
fallback) and is the ceiling for the x-ltg-max-attempts request header. A step is retried only when its attempt
definitely did no provider work (connection failure before dispatch, or 429/529) before the first provider event;
an uncertain failure (timeout, 408/500/502/503/504) moves to the next fallback step instead. max_attempts x
(1 + the longest fallback chain) must not exceed 8, else 400. The n-th retry waits retry_delay_ms (constant),
retry_delay_ms*n (linear) or retry_delay_ms*2^(n-1) (exponential), at most 5 s and never past the request deadline,
then jittered uniformly down to half that value so concurrent retries spread out; a provider Retry-After of
at most 5 s is honoured and a longer one moves to the next step. request_timeout_ms applies to streaming requests
only: it bounds each attempt''s time to its first provider event and never applies after it. Non-stream requests
keep the per-attempt hop and idle bounds (their headers arrive only with the finished completion). retry_delay_ms
and backoff are floors for the request knobs. Each planned attempt is reserved (at most 8 per request); unused
reservation is released at settlement. Managed routes only. The stored form is echoed back with defaults filled
in; null disables retries.'
- type: 'null'
blocked:
type: boolean
spend:
$ref: '#/components/schemas/Money'
reserved_spend:
$ref: '#/components/schemas/Money'
budget_started_at:
anyOf:
- type: string
format: date-time
- type: 'null'
resets_at:
anyOf:
- type: string
format: date-time
- type: 'null'
required:
- record_type
- id
- created_at
- updated_at
- version
- name
- max_budget
- budget_duration
- tpm_limit
- rpm_limit
- allowed_models
- cache_ttl
- provider_key_ids
- guardrails
- fallbacks
- retries
- blocked
- spend
- reserved_spend
- budget_started_at
- resets_at
TokenGroupCreate:
type: object
additionalProperties: false
properties:
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
- type: 'null'
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
rpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
allowed_models:
type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
cache_ttl:
anyOf:
- type: integer
minimum: 1
maximum: 86400
- type: 'null'
provider_key_ids:
type: array
items:
type: string
format: uuid
uniqueItems: true
maxItems: 1000
guardrails:
anyOf:
- type: object
additionalProperties: false
properties:
secrets:
type: object
additionalProperties: false
properties:
prompt:
type: string
enum:
- ignore
- flag
- block
response:
type: string
enum:
- ignore
- flag
- block
dlp:
type: object
additionalProperties: false
properties:
profiles:
type: array
items:
type: string
enum:
- financial
- government_id
- contact
uniqueItems: true
prompt:
type: string
enum:
- ignore
- flag
- block
response:
type: string
enum:
- ignore
- flag
- block
streaming:
type: string
enum:
- buffered
- passthrough
description: Per-group guardrail policy. Missing actions default to ignore. profiles may be listed with both dlp
actions ignore (staged, inactive) but a non-ignore dlp action requires at least one profile. streaming defaults
to buffered when any response action is block and passthrough otherwise; passthrough with a response block is
400. Findings are codes and counts only; content is never stored. The stored form is echoed back canonicalised
(all actions explicit, profiles sorted); {} is stored as an all-ignore policy, null disables.
- type: 'null'
fallbacks:
anyOf:
- type: object
maxProperties: 1000
additionalProperties:
type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
minItems: 1
maxItems: 3
uniqueItems: true
description: 'Per-group model fallbacks: primary alias -> ordered list of 1..3 other aliases. Every key and listed
alias must be in allowed_models (a PATCH removing a referenced alias is 400); a chain never lists its own key;
wildcards are rejected. Chains are one level deep (a step''s own chain is not expanded). Fallback is attempted
only for managed routes, only before the first provider event is forwarded, and only to steps the key may use;
each attempt is reserved and recorded. {} and null both disable fallbacks.'
- type: 'null'
retries:
anyOf:
- type: object
additionalProperties: false
properties:
max_attempts:
type: integer
minimum: 1
maximum: 5
retry_delay_ms:
type: integer
minimum: 0
maximum: 5000
default: 250
backoff:
type: string
enum:
- constant
- linear
- exponential
default: exponential
request_timeout_ms:
anyOf:
- type: integer
minimum: 1000
maximum: 60000
- type: 'null'
required:
- max_attempts
description: 'Per-group same-route retries. max_attempts counts the first try of each step (the primary and each
fallback) and is the ceiling for the x-ltg-max-attempts request header. A step is retried only when its attempt
definitely did no provider work (connection failure before dispatch, or 429/529) before the first provider event;
an uncertain failure (timeout, 408/500/502/503/504) moves to the next fallback step instead. max_attempts x
(1 + the longest fallback chain) must not exceed 8, else 400. The n-th retry waits retry_delay_ms (constant),
retry_delay_ms*n (linear) or retry_delay_ms*2^(n-1) (exponential), at most 5 s and never past the request deadline,
then jittered uniformly down to half that value so concurrent retries spread out; a provider Retry-After of
at most 5 s is honoured and a longer one moves to the next step. request_timeout_ms applies to streaming requests
only: it bounds each attempt''s time to its first provider event and never applies after it. Non-stream requests
keep the per-attempt hop and idle bounds (their headers arrive only with the finished completion). retry_delay_ms
and backoff are floors for the request knobs. Each planned attempt is reserved (at most 8 per request); unused
reservation is released at settlement. Managed routes only. The stored form is echoed back with defaults filled
in; null disables retries.'
- type: 'null'
blocked:
type: boolean
required:
- name
- allowed_models
TokenGroupList:
type: object
additionalProperties: false
properties:
data:
type: array
items:
$ref: '#/components/schemas/TokenGroup'
meta:
$ref: '#/components/schemas/ai-gateway-resources_PageMeta'
required:
- data
- meta
TokenGroupPatch:
type: object
additionalProperties: false
properties:
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
- type: 'null'
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
rpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
allowed_models:
type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
cache_ttl:
anyOf:
- type: integer
minimum: 1
maximum: 86400
- type: 'null'
provider_key_ids:
type: array
items:
type: string
format: uuid
uniqueItems: true
maxItems: 1000
guardrails:
anyOf:
- type: object
additionalProperties: false
properties:
secrets:
type: object
additionalProperties: false
properties:
prompt:
type: string
enum:
- ignore
- flag
- block
response:
type: string
enum:
- ignore
- flag
- block
dlp:
type: object
additionalProperties: false
properties:
profiles:
type: array
items:
type: string
enum:
- financial
- government_id
- contact
uniqueItems: true
prompt:
type: string
enum:
- ignore
- flag
- block
response:
type: string
enum:
- ignore
- flag
- block
streaming:
type: string
enum:
- buffered
- passthrough
description: Per-group guardrail policy. Missing actions default to ignore. profiles may be listed with both dlp
actions ignore (staged, inactive) but a non-ignore dlp action requires at least one profile. streaming defaults
to buffered when any response action is block and passthrough otherwise; passthrough with a response block is
400. Findings are codes and counts only; content is never stored. The stored form is echoed back canonicalised
(all actions explicit, profiles sorted); {} is stored as an all-ignore policy, null disables.
- type: 'null'
fallbacks:
anyOf:
- type: object
maxProperties: 1000
additionalProperties:
type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
minItems: 1
maxItems: 3
uniqueItems: true
description: 'Per-group model fallbacks: primary alias -> ordered list of 1..3 other aliases. Every key and listed
alias must be in allowed_models (a PATCH removing a referenced alias is 400); a chain never lists its own key;
wildcards are rejected. Chains are one level deep (a step''s own chain is not expanded). Fallback is attempted
only for managed routes, only before the first provider event is forwarded, and only to steps the key may use;
each attempt is reserved and recorded. {} and null both disable fallbacks.'
- type: 'null'
retries:
anyOf:
- type: object
additionalProperties: false
properties:
max_attempts:
type: integer
minimum: 1
maximum: 5
retry_delay_ms:
type: integer
minimum: 0
maximum: 5000
default: 250
backoff:
type: string
enum:
- constant
- linear
- exponential
default: exponential
request_timeout_ms:
anyOf:
- type: integer
minimum: 1000
maximum: 60000
- type: 'null'
required:
- max_attempts
description: 'Per-group same-route retries. max_attempts counts the first try of each step (the primary and each
fallback) and is the ceiling for the x-ltg-max-attempts request header. A step is retried only when its attempt
definitely did no provider work (connection failure before dispatch, or 429/529) before the first provider event;
an uncertain failure (timeout, 408/500/502/503/504) moves to the next fallback step instead. max_attempts x
(1 + the longest fallback chain) must not exceed 8, else 400. The n-th retry waits retry_delay_ms (constant),
retry_delay_ms*n (linear) or retry_delay_ms*2^(n-1) (exponential), at most 5 s and never past the request deadline,
then jittered uniformly down to half that value so concurrent retries spread out; a provider Retry-After of
at most 5 s is honoured and a longer one moves to the next step. request_timeout_ms applies to streaming requests
only: it bounds each attempt''s time to its first provider event and never applies after it. Non-stream requests
keep the per-attempt hop and idle bounds (their headers arrive only with the finished completion). retry_delay_ms
and backoff are floors for the request knobs. Each planned attempt is reserved (at most 8 per request); unused
reservation is released at settlement. Managed routes only. The stored form is echoed back with defaults filled
in; null disables retries.'
- type: 'null'
blocked:
type: boolean
minProperties: 1
TokenGroupResponse:
type: object
additionalProperties: false
properties:
data:
$ref: '#/components/schemas/TokenGroup'
required:
- data
TokenKey:
type: object
additionalProperties: false
properties:
record_type:
const: token_key
id:
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
version:
type: integer
minimum: 1
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
- type: 'null'
description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is
kept until the key is unblocked).
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is
kept until the key is unblocked).
rpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is
kept until the key is unblocked).
allowed_models:
anyOf:
- type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
- type: 'null'
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
blocked:
type: boolean
required_end_user_id:
type: boolean
default: false
description: Require a nonempty caller-asserted end-user ID; not proof of identity.
spend:
$ref: '#/components/schemas/Money'
reserved_spend:
$ref: '#/components/schemas/Money'
budget_started_at:
anyOf:
- type: string
format: date-time
- type: 'null'
resets_at:
anyOf:
- type: string
format: date-time
- type: 'null'
provisioning:
type: string
enum:
- ready
- pending
- unavailable
- inactive
- unsupported
- unknown
description: 'Provisioning state of the key''s current policy. `pending`: retry readiness with bounded backoff (treat
`unknown` the same). `inactive` and `unsupported` are terminal until the key, group, user or catalog changes.
`unavailable` means provisioning is stuck and is retried slowly; surface it. Absent while the gateway runs in
compatibility mode.'
required:
- record_type
- id
- created_at
- updated_at
- version
- name
- token_group_id
- token_user_id
- max_budget
- budget_duration
- tpm_limit
- rpm_limit
- allowed_models
- expires_at
- blocked
- required_end_user_id
- spend
- reserved_spend
- budget_started_at
- resets_at
TokenKeyCreate:
type: object
additionalProperties: false
properties:
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
minimum: 1.0e-06
maximum: 1000
- type: 'null'
description: 'Omitted or null defaults to the maximum (1000 USD) (on a blocked key, null is kept until the key is
unblocked); a value below the minimum (0.000001 USD) or above the maximum is rejected with 400 limit_out_of_range;
a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to
deny it; blocking is always accepted. The default budget is lifetime unless budget_duration is set. Budgets and
spend are an enforcement guard computed at one flat placeholder rate for every Telnyx-hosted model (rate_version
telnyx-reference-v1: 5 USD per million input and 15 USD per million output tokens), not the customer''s bill;
Telnyx Inference usage is billed separately at the model''s actual price.'
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 1
maximum: 10000000
- type: 'null'
description: 'Omitted or null defaults to the maximum (10000000) (on a blocked key, null is kept until the key is
unblocked); a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed
value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking
is always accepted.'
rpm_limit:
anyOf:
- type: integer
minimum: 1
maximum: 6000
- type: 'null'
description: 'Omitted or null defaults to the maximum (6000) (on a blocked key, null is kept until the key is unblocked);
a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed value
(negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking
is always accepted.'
allowed_models:
anyOf:
- type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
- type: 'null'
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
blocked:
type: boolean
required_end_user_id:
type: boolean
default: false
description: Require a nonempty caller-asserted end-user ID; not proof of identity.
required:
- name
- token_group_id
TokenKeyCreated:
type: object
additionalProperties: false
properties:
record_type:
const: token_key
id:
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
version:
type: integer
minimum: 1
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
- type: 'null'
description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is
kept until the key is unblocked).
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is
kept until the key is unblocked).
rpm_limit:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: Stored key limit; set to the maximum when the key was written without one (on a blocked key, null is
kept until the key is unblocked).
allowed_models:
anyOf:
- type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
- type: 'null'
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
blocked:
type: boolean
required_end_user_id:
type: boolean
default: false
description: Require a nonempty caller-asserted end-user ID; not proof of identity.
spend:
$ref: '#/components/schemas/Money'
reserved_spend:
$ref: '#/components/schemas/Money'
budget_started_at:
anyOf:
- type: string
format: date-time
- type: 'null'
resets_at:
anyOf:
- type: string
format: date-time
- type: 'null'
provisioning:
type: string
enum:
- ready
- pending
- unavailable
- inactive
- unsupported
- unknown
description: 'Provisioning state of the key''s current policy. `pending`: retry readiness with bounded backoff (treat
`unknown` the same). `inactive` and `unsupported` are terminal until the key, group, user or catalog changes.
`unavailable` means provisioning is stuck and is retried slowly; surface it. Absent while the gateway runs in
compatibility mode.'
token:
type: string
pattern: ^ltg_sk_[A-Za-z0-9_-]+$
readOnly: true
required:
- record_type
- id
- created_at
- updated_at
- version
- name
- token_group_id
- token_user_id
- max_budget
- budget_duration
- tpm_limit
- rpm_limit
- allowed_models
- expires_at
- blocked
- required_end_user_id
- spend
- reserved_spend
- budget_started_at
- resets_at
- token
TokenKeyCreatedResponse:
type: object
additionalProperties: false
properties:
data:
$ref: '#/components/schemas/TokenKeyCreated'
required:
- data
TokenKeyList:
type: object
additionalProperties: false
properties:
data:
type: array
items:
$ref: '#/components/schemas/TokenKey'
meta:
$ref: '#/components/schemas/ai-gateway-resources_PageMeta'
required:
- data
- meta
TokenKeyPatch:
type: object
additionalProperties: false
properties:
max_parallel_requests:
anyOf:
- type: integer
minimum: 1
maximum: 1000
description: Optional maximum concurrent reserved/dispatched cache misses across replicas. Null means no concurrency
cap. Cache hits do not consume slots; unknown usage retains its budget hold without a slot.
- type: 'null'
name:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
max_budget:
anyOf:
- $ref: '#/components/schemas/Money'
minimum: 1.0e-06
maximum: 1000
- type: 'null'
description: 'Omitted or null defaults to the maximum (1000 USD) (on a blocked key, null is kept until the key is
unblocked); a value below the minimum (0.000001 USD) or above the maximum is rejected with 400 limit_out_of_range;
a malformed value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to
deny it; blocking is always accepted. The default budget is lifetime unless budget_duration is set. Budgets and
spend are an enforcement guard computed at one flat placeholder rate for every Telnyx-hosted model (rate_version
telnyx-reference-v1: 5 USD per million input and 15 USD per million output tokens), not the customer''s bill;
Telnyx Inference usage is billed separately at the model''s actual price.'
budget_duration:
$ref: '#/components/schemas/BudgetDuration'
tpm_limit:
anyOf:
- type: integer
minimum: 1
maximum: 10000000
- type: 'null'
description: 'Omitted or null defaults to the maximum (10000000) (on a blocked key, null is kept until the key is
unblocked); a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed
value (negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking
is always accepted.'
rpm_limit:
anyOf:
- type: integer
minimum: 1
maximum: 6000
- type: 'null'
description: 'Omitted or null defaults to the maximum (6000) (on a blocked key, null is kept until the key is unblocked);
a value below the minimum (1) or above the maximum is rejected with 400 limit_out_of_range; a malformed value
(negative, wrong type or precision) is 400 invalid_request. Block the key (blocked: true) to deny it; blocking
is always accepted.'
allowed_models:
anyOf:
- type: array
items:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
uniqueItems: true
maxItems: 1000
- type: 'null'
expires_at:
anyOf:
- type: string
format: date-time
- type: 'null'
blocked:
type: boolean
required_end_user_id:
type: boolean
description: Require a nonempty caller-asserted end-user ID; not proof of identity. Omission preserves the current
requirement.
minProperties: 1
TokenKeyResponse:
type: object
additionalProperties: false
properties:
data:
$ref: '#/components/schemas/TokenKey'
required:
- data
TokenRequest:
type: object
properties:
grant_type:
type: string
enum:
- client_credentials
- authorization_code
- refresh_token
description: OAuth 2.0 grant type
scope:
type: string
description: Space-separated list of requested scopes (for client_credentials)
example: admin
code:
type: string
description: Authorization code (for authorization_code flow)
redirect_uri:
type: string
format: uri
description: Redirect URI (for authorization_code flow)
code_verifier:
type: string
description: PKCE code verifier (for authorization_code flow)
refresh_token:
type: string
description: Refresh token (for refresh_token flow)
client_id:
type: string
description: OAuth client ID (if not using HTTP Basic auth)
client_secret:
type: string
description: OAuth client secret (if not using HTTP Basic auth)
required:
- grant_type
TokenResponse:
type: object
properties:
access_token:
type: string
description: The access token
token_type:
type: string
enum:
- Bearer
description: Token type
expires_in:
type: integer
description: Token lifetime in seconds
scope:
type: string
description: Space-separated list of granted scopes
refresh_token:
type: string
description: Refresh token (if applicable)
required:
- access_token
- token_type
- expires_in
ToolCall:
title: Tool Call
type: object
description: A call to a function tool created by the model.
properties:
id:
description: The ID of the tool call.
type: string
type:
description: The type of the tool. Currently, only `function` is supported.
type: string
enum:
- function
function:
description: The function that the model called.
type: object
properties:
name:
type: string
description: The name of the function to call.
required:
- name
required:
- id
- type
- function
example:
id: call_123
type: function
function:
name: get_weather
ToolMessage:
type: object
title: Tool Message
properties:
role:
description: The role of the messages author, in this case `tool`.
type: string
enum:
- tool
content:
description: The contents of the tool message.
type: string
tool_call_id:
description: Tool call that this message is responding to.
type: string
metadata:
$ref: '#/components/schemas/MessageMetadata'
required:
- role
- content
- tool_call_id
example:
role: tool
content: Hello, I'm John.
tool_call_id: call_123
ToolNode:
description: A standalone tool step in a conversation flow, as returned by the API.
properties:
id:
description: Caller-supplied unique identifier for this node within the flow.
title: Id
type: string
name:
description: Optional human-readable label, displayed in authoring UIs.
title: Name
type: string
position:
$ref: '#/components/schemas/NodePosition'
description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips
so frontends can persist graph layout across reloads.
shared_tool_id:
description: ID of the single shared (org-level) tool this node executes. When the flow reaches this node the tool
runs as a deliberate step (no LLM turn); its outgoing `llm` / `expression` edges route the flow on the tool's
outcome. Arguments are filled from the conversation's dynamic variables by name — a dynamic variable whose name
matches one of the tool's parameters supplies that argument. Cross-validated against the org's shared tools on
write.
title: Shared Tool Id
type: string
tool:
$ref: '#/components/schemas/AssistantTools'
description: Full tool definition resolved from `shared_tool_id` server-side. Populated on responses so clients
can render the node without a follow-up fetch. Ignored on input — set `shared_tool_id`.
type:
const: tool
default: tool
description: Node kind discriminator. Always `tool` for a tool node.
title: Type
type: string
message:
description: 'Optional message delivered to the user verbatim immediately before the tool executes — an announcement
such as ''One moment while I look that up.'' No LLM turn and no customer turn: the message is spoken/sent, then
the tool runs, in the same deterministic step. `{{variable}}` placeholders are interpolated from the conversation''s
dynamic variables (unresolved → empty string); the tool''s own result is not yet available when the message is
rendered. Omit for a silent tool step.'
example: One moment while I process your payment.
minLength: 1
pattern: \S
title: Message
type: string
required:
- id
- shared_tool_id
title: ToolNode
type: object
ToolNodeReq:
description: 'A standalone tool step in a conversation flow, as supplied by clients.
Unlike a prompt node, a tool node has no instructions or model — it
isn''t an LLM turn. Reaching it deterministically runs one shared tool
(arguments filled from matching dynamic variables by name), then routes
via outgoing `llm` / `expression` edges, with exactly one `default`
fallback edge required when the node has any outgoing edges (the
tool''s outcome is readable as `telnyx_last_tool_status_code` in
`expression` conditions).'
example:
id: n_charge
message: One moment while I process your payment.
name: Charge card
position:
x: 300
y: 200
shared_tool_id: tool-charge-card
type: tool
properties:
id:
description: Caller-supplied unique identifier for this node within the flow.
example: n_charge
title: Id
type: string
message:
description: 'Optional message delivered to the user verbatim immediately before the tool executes — an announcement
such as ''One moment while I look that up.'' No LLM turn and no customer turn: the message is spoken/sent, then
the tool runs, in the same deterministic step. `{{variable}}` placeholders are interpolated from the conversation''s
dynamic variables (unresolved → empty string); the tool''s own result is not yet available when the message is
rendered. Omit for a silent tool step.'
example: One moment while I process your payment.
minLength: 1
pattern: \S
title: Message
type: string
name:
description: Optional human-readable label, displayed in authoring UIs.
example: Charge card
title: Name
type: string
position:
$ref: '#/components/schemas/NodePosition'
description: Optional canvas coordinates used by authoring UIs to lay out the graph. Ignored by the runtime; round-trips
so frontends can persist graph layout across reloads.
example:
x: 300
y: 200
shared_tool_id:
description: ID of the single shared (org-level) tool this node executes. When the flow reaches this node the tool
runs as a deliberate step (no LLM turn); its outgoing `llm` / `expression` edges route the flow on the tool's
outcome. Arguments are filled from the conversation's dynamic variables by name — a dynamic variable whose name
matches one of the tool's parameters supplies that argument. Cross-validated against the org's shared tools on
write.
example: tool-charge-card
title: Shared Tool Id
type: string
type:
const: tool
default: tool
description: Node kind discriminator. Always `tool` for a tool node.
title: Type
type: string
required:
- id
- shared_tool_id
title: ToolNodeReq
type: object
TosAgreement:
type: object
description: A recorded user agreement to a product's Terms of Service. The `user_id` is intentionally NOT echoed back
on this public surface - the caller already knows their own identity.
properties:
id:
type: string
format: uuid
description: The unique identifier of this recorded agreement.
example: 550e8400-e29b-41d4-a716-446655440000
readOnly: true
terms_version:
type: string
description: The version of the terms you accepted.
example: v1.0.0
version:
type: string
description: Convenience alias of `terms_version`. Both keys are present on every response.
example: v1.0.0
readOnly: true
product_type:
$ref: '#/components/schemas/TosProductType'
agreed_at:
type: string
format: date-time
description: When you accepted this version of the terms.
example: '2025-07-10T10:30:00Z'
readOnly: true
created_at:
type: string
format: date-time
description: When this agreement record was created.
example: '2025-07-10T10:30:00Z'
readOnly: true
TosAgreementList:
type: object
description: Paginated list of Terms of Service agreements for the calling user.
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/TosAgreement'
meta:
$ref: '#/components/schemas/branded-calling_PaginationMeta'
TosAgreementWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/TosAgreement'
TosProductType:
type: string
enum:
- branded_calling
- number_reputation
description: Telnyx product the Terms of Service apply to.
example: branded_calling
TosStatus:
type: object
description: Whether the calling user has agreed to a product's current Terms of Service. The `user_id` is intentionally
omitted on this public surface.
required:
- product_type
- current_terms_version
- has_agreed
- agreement_required
properties:
product_type:
$ref: '#/components/schemas/TosProductType'
current_terms_version:
type: string
description: Latest published version of the ToS for this product.
example: v1.1.0
has_agreed:
type: boolean
description: '`true` if the user has agreed to the latest version.'
example: false
agreed_version:
type: string
nullable: true
description: Version the user previously agreed to (may be older than `current_terms_version`). `null` if the user
has never agreed.
example: v1.0.0
agreed_at:
type: string
format: date-time
nullable: true
description: When you accepted the terms, or null if you have not.
example: '2025-07-10T10:30:00Z'
agreement_required:
type: boolean
description: '`true` when the user must agree to the latest version before using the product. Equivalent to `!has_agreed`.'
example: true
TosStatusWrapped:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/TosStatus'
TotalSummary:
type: object
properties:
new_mrc:
type: string
description: Total new monthly recurring charges as decimal string
example: '50.00'
new_otc:
type: string
description: Total new one-time charges as decimal string
example: '25.00'
existing_mrc:
type: string
description: Total existing monthly recurring charges as decimal string
example: '100.00'
other:
type: string
description: Other charges as decimal string
example: '10.00'
credits:
type: string
description: Total credits as decimal string
example: '-5.00'
ledger_adjustments:
type: string
description: Ledger adjustments as decimal string
example: '0.00'
grand_total:
type: string
description: Grand total of all charges as decimal string
example: '180.00'
required:
- new_mrc
- new_otc
- existing_mrc
- other
- credits
- ledger_adjustments
- grand_total
TracedMemory:
properties:
id:
type: string
title: Id
text:
type: string
title: Text
recorded_at:
anyOf:
- type: string
- type: 'null'
title: Recorded At
source_id:
anyOf:
- type: string
- type: 'null'
title: Source Id
description: The source this memory was extracted from. Set for a fact, which comes from exactly one source; null
for a memory derived from other memories. Read it with `GET .../sources/{source_id}`. A source deleted a moment
ago can still be named here, and then answers 404.
derived_from:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Derived From
description: The ids of the memories this one was derived from. Read each with `GET .../memories/{memory_id}` to
reach its `source_id`. Set for a derived memory; null for a fact.
type: object
required:
- id
- text
- source_id
- derived_from
title: TracedMemory
TrackingSettings:
type: object
description: Per-send open and click tracking overrides. Omitted properties inherit the sender domain's tracking settings.
properties:
open_tracking:
type: boolean
description: Whether to inject an open-tracking pixel for this message.
click_tracking:
type: boolean
description: Whether to rewrite links for click tracking in this message.
TrafficPolicyProfile:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
readOnly: true
example: traffic_policy_profile
type:
description: The type of the traffic policy profile.
type: string
enum:
- whitelist
- blacklist
- throttling
example: whitelist
services:
description: Array of PCEF service IDs included in the profile.
type: array
items:
type: string
example:
- service_123
- service_456
ip_ranges:
description: Array of IP ranges in CIDR notation.
type: array
items:
type: string
example:
- 10.64.0.0/24
- 10.64.0.0/25
domains:
description: Array of domain names.
type: array
items:
type: string
example:
- www.hbomax.com
- netflix.com
limit_bw_kbps:
description: Bandwidth limit in kbps.
type:
- integer
- 'null'
example: 512
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
TrafficType:
type: string
description: Specifies the type of traffic allowed in this profile.
enum:
- conversational
example: conversational
default: conversational
TranscriptFrame:
type: object
description: Server-to-client frame containing a transcription result.
properties:
type:
type: string
const: transcript
description: Frame type identifier.
transcript:
type: string
description: The transcribed text from the audio.
is_final:
type: boolean
description: Whether this is a final transcription result. When `false`, this is an interim result that may be refined.
confidence:
type:
- number
- 'null'
description: Confidence score of the transcription, ranging from 0 to 1. `cohere/ar-stt` frames return `null` here
rather than omitting the field.
required:
- type
- transcript
TranscriptSegment:
type: object
additionalProperties: false
required:
- seq
- text
- confidence
- speaker_label
- relative_ts
- occurred_at
properties:
seq:
type: integer
text:
type: string
confidence:
type:
- number
- 'null'
minimum: 0
maximum: 1
speaker_label:
type:
- string
- 'null'
relative_ts:
type:
- number
- 'null'
occurred_at:
type: string
format: date-time
example:
seq: 1
text: Welcome to the project kickoff.
confidence: 0.98
speaker_label: Speaker 1
relative_ts: 12.5
occurred_at: '2025-01-15T10:00:12Z'
TranscriptSegmentListResponse:
type: object
additionalProperties: false
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/TranscriptSegment'
meta:
type: object
additionalProperties: false
required:
- next_after
properties:
next_after:
type:
- integer
- 'null'
description: Cursor to pass as `after` on the next request, or null when the response contains no segments.
example:
data:
- seq: 41
text: let's ship it
confidence: 0.94
speaker_label: Ada L.
relative_ts: 1240.5
occurred_at: '2026-06-16T09:00:42Z'
meta:
next_after: 41
Transcription:
type: object
title: Transcription
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.transcription
enum:
- call.transcription
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
description: Unique identifier and token for controlling the call.
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
transcription_data:
type: object
properties:
confidence:
type:
- number
- 'null'
format: float
example: 0.977219
description: Speech recognition confidence level. `cohere/ar-stt` returns `null` here rather than omitting
the field.
is_final:
type: boolean
example: true
description: When false, it means that this is an interim result.
transcript:
type: string
example: hello this is a test speech
description: Recognized text.
transcription_track:
type: string
enum:
- inbound
- outbound
example: inbound
description: Indicates which leg of the call has been transcribed. This is only available when `transcription_engine`
is set to `B`.
example:
record_type: event
event_type: call.transcription
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:7subYr8fLrXmaAXm8egeAMpoSJ72J3SGPUuome81-hQuaKRf9b7hKA
call_leg_id: 5ca81340-5beb-11eb-ae45-02420a0f8b69
call_session_id: 5ca81eee-5beb-11eb-ba6c-02420a0f8b69
connection_id: '1240401930086254526'
transcription_data:
confidence: 0.977219
is_final: true
transcript: hello this is a test speech
TranscriptionChallenger:
title: TranscriptionChallenger
description: A second speech-to-text model that transcribes alongside `transcription.model`, and the rule that decides
which transcript the assistant uses.
type: object
properties:
model:
type: string
enum:
- deepgram/flux
- deepgram/nova-3
- deepgram/nova-2
- azure/fast
- assemblyai/universal-3-5-pro
- assemblyai/universal-streaming
- xai/grok-stt
- soniox/stt-rt-v4
- soniox/stt-rt-v5
- nvidia/parakeet-v3
- omi-health/omi-med-stt-v1
- humain/realtime
- reson8/turns
- cohere/ar-stt
- telnyx/basira
- distil-whisper/distil-large-v2
- openai/whisper-large-v3-turbo
description: 'The language booster''s model. It must be the same kind of model as `transcription.model`: both streaming
(`deepgram/flux`, `deepgram/nova-3`, `deepgram/nova-2`, `assemblyai/universal-3-5-pro` or its legacy alias `assemblyai/universal-streaming`,
`xai/grok-stt`, `soniox/stt-rt-v4`, `soniox/stt-rt-v5`, `humain/realtime`, `reson8/turns`) or both non-streaming
(`azure/fast`, `nvidia/parakeet-v3`, `omi-health/omi-med-stt-v1`, `cohere/ar-stt`, `distil-whisper/distil-large-v2`,
`openai/whisper-large-v3-turbo`, `telnyx/basira`). It can be the same model as `transcription.model` on a different
`language`.'
language:
type:
- string
- 'null'
description: The language this model transcribes. Omit it or set it to `null` to use the language of `transcription.model`.
The request is rejected when this model doesn't support the language it would run. It is also rejected when it
would run the same model on the same language as `transcription.model`.
settings:
anyOf:
- $ref: '#/components/schemas/TranscriptionSettingsConfig'
- type: 'null'
description: Settings for the language booster, with the same fields and limits as `transcription.settings`. Fields
that don't apply to this model's provider are dropped, and the provider's defaults fill in the rest. Omit it or
set it to `null` to use the settings of `transcription.model` where they apply to this model.
rule:
type: string
enum:
- best_turn
- best_engine
- merge_words
default: best_turn
description: 'How the assistant picks the transcript it uses. The models are compared on how complete and confident
their transcripts are, not on language, so the rules work best when both models understand the callers'' language.
- `best_turn` (default): both models transcribe the whole call. Each turn uses the language booster''s transcript
only when it scores higher than the transcript of `transcription.model` (clearly higher with non-streaming models).
With streaming models, `transcription.model` also decides when each turn ends. Available for every pair.
- `best_engine`: both models transcribe the first turns, then the call continues alone on the model whose transcripts
scored higher. If neither clearly leads, `transcription.model` continues. Streaming models only.
- `merge_words`: both models transcribe each utterance and their words are merged, keeping Arabic and English
spoken in the same sentence. Available only for `telnyx/basira` with `cohere/ar-stt`, in either order. The pair
runs on the language that applies to `telnyx/basira` (its own, or that of `transcription.model`), which must be
Arabic (`ar` or an `ar-` locale), `multi`, or `auto`.'
required:
- model
example:
model: deepgram/nova-3
language: en
rule: best_turn
TranscriptionConfig:
type: object
description: The settings associated with speech to text for the voice assistant. This is only relevant if the assistant
uses a text-to-text language model. Any assistant using a model with native audio support (e.g. `fixie-ai/ultravox-v0_4`)
will ignore this field.
properties:
model:
description: 'The speech to text model to be used by the voice assistant. Supported models include:
- `deepgram/flux` (or `flux`) for live streaming turn-taking.
- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.
- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.
- `speechmatics/linden-1` (preview, vendor-hosted) for live streaming transcription; no auto-detect, so set `language`
from Speechmatics'' Realtime language list (defaults to `en`).
- `assemblyai/universal-3-5-pro` for live streaming transcription. The legacy alias `assemblyai/universal-streaming`
is still accepted and resolves to the same model.
- `xai/grok-stt` for live streaming transcription.
- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.
- `nvidia/parakeet-v3` for multilingual transcription with automatic language detection.
- `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based).
- `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support.
- `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language
detection.
- `cohere/ar-stt` for non-streaming Arabic and English transcription.
- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.
- `google/latest_long` for non-streaming multilingual transcription.
- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.
- `openai/whisper-large-v3-turbo` for multilingual non-streaming transcription with automatic language detection.'
type: string
enum:
- deepgram/flux
- flux
- deepgram/nova-3
- deepgram/nova-2
- speechmatics/standard
- speechmatics/enhanced
- speechmatics/linden-1
- assemblyai/universal-3-5-pro
- assemblyai/universal-streaming
- xai/grok-stt
- soniox/stt-rt-v4
- nvidia/parakeet-v3
- omi-health/omi-med-stt-v1
- humain/realtime
- reson8/turns
- cohere/ar-stt
- azure/fast
- azure/realtime
- google/latest_long
- distil-whisper/distil-large-v2
- openai/whisper-large-v3-turbo
default: distil-whisper/distil-large-v2
example: distil-whisper/distil-large-v2
language:
type: string
description: 'The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will
automatically detect the language. Supported and meaningful values depend on the selected transcription `model`.
For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi`
(no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`.
For `soniox/stt-rt-v4`, `auto` omits the language hint and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`,
`es`) bias detection toward that language. For `assemblyai/universal-3-5-pro` (and its legacy alias `assemblyai/universal-streaming`),
`auto` (or unset) enables native multilingual code-switching; ISO 639-1 codes (`en`, `es`, `de`, `fr`, `pt`, `it`,
`tr`, `nl`, `sv`, `no`, `da`, `fi`, `hi`, `vi`, `ar`, `he`, `ja`, `zh`) bias the session to that language. For
`humain/realtime`, supported values are `ar`, `en`, `codeswitch` (Arabic/English code-switching), and `auto` (resolves
server-side to code-switching). Unlike other models, `humain/realtime` does not fall back to `auto` when `language`
is omitted — omitting it applies `en` instead. For `reson8/turns`, supported values are `auto` (or unset) for
automatic language detection, and the language codes `nl`, `en`, `fr`, `fy`, `de`, `it`, `pl`, `pt`, `es`, and
`sv` to fix the transcription language. For `cohere/ar-stt`, supported values are `ar` and `en`; unlike other
models, this model does not auto-detect and defaults to `ar` when `language` is omitted. For `speechmatics/linden-1`,
there is no auto-detect; set a code from Speechmatics'' Realtime language list (see `SpeechmaticsTranscriptionLanguage`);
unset defaults to `en`, while an explicit `auto`, `auto_beta`, or `multi` is rejected (unlike `speechmatics/standard`,
which defaults to `en`).'
TranscriptionEndpointingPlan:
type: object
title: TranscriptionEndpointingPlan
description: Endpointing thresholds used to decide when the user has finished speaking. Applies to non turn-taking transcription
models. For `deepgram/flux`, use `transcription.settings.eot_threshold` / `eot_timeout_ms` / `eager_eot_threshold`.
properties:
on_punctuation_seconds:
type: number
format: float
default: 0.1
description: Seconds to wait after the transcript ends with punctuation.
on_no_punctuation_seconds:
type: number
format: float
default: 1.5
description: Seconds to wait after the transcript ends without punctuation.
on_number_seconds:
type: number
format: float
default: 0.5
description: Seconds to wait after the transcript ends with a number.
TranscriptionEngineAConfig:
type: object
title: Transcription engine A config
properties:
transcription_engine:
type: string
enum:
- A
description: Engine identifier for Google transcription service
language:
$ref: '#/components/schemas/GoogleTranscriptionLanguage'
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
enable_speaker_diarization:
type: boolean
description: Enables speaker diarization.
default: false
example: true
min_speaker_count:
description: Defines minimum number of speakers in the conversation.
type: integer
example: 4
default: 2
format: int32
max_speaker_count:
description: Defines maximum number of speakers in the conversation.
type: integer
example: 4
default: 6
format: int32
profanity_filter:
description: Enables profanity_filter.
type: boolean
default: false
example: true
use_enhanced:
description: Enables enhanced transcription, this works for models `phone_call` and `video`.
type: boolean
default: false
example: true
model:
description: The model to use for transcription.
type: string
enum:
- latest_long
- latest_short
- command_and_search
- phone_call
- video
- default
- medical_conversation
- medical_dictation
hints:
description: Hints to improve transcription accuracy.
type: array
items:
type: string
default: []
example:
- Telnyx
speech_context:
description: Speech context to improve transcription accuracy.
type: array
items:
type: object
properties:
phrases:
type: array
items:
type: string
default: []
example:
- Telnyx
boost:
type: number
description: Boost factor for the speech context.
default: 1.0
minimum: 0.0
maximum: 20.0
example: 1.0
TranscriptionEngineAssemblyaiConfig:
type: object
title: Transcription engine AssemblyAI config
properties:
transcription_engine:
type: string
enum:
- AssemblyAI
description: Engine identifier for AssemblyAI transcription service
transcription_model:
description: The model to use for transcription. `assemblyai/universal-streaming` is a legacy alias of `assemblyai/universal-3-5-pro`
and resolves to the same model.
type: string
enum:
- assemblyai/universal-3-5-pro
- assemblyai/universal-streaming
default: assemblyai/universal-3-5-pro
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
TranscriptionEngineAzureConfig:
type: object
title: Transcription engine Azure config
properties:
transcription_engine:
type: string
enum:
- Azure
description: Engine identifier for Azure transcription service
language:
$ref: '#/components/schemas/AzureTranscriptionLanguage'
region:
$ref: '#/components/schemas/AzureTranscriptionRegion'
api_key_ref:
type: string
description: Reference to the API key for authentication. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)
for details. The parameter is optional as defaults are available for some regions.
required:
- transcription_engine
- region
TranscriptionEngineBConfig:
type: object
title: Transcription engine B config
properties:
transcription_engine:
type: string
enum:
- B
description: Engine identifier for Telnyx transcription service
language:
$ref: '#/components/schemas/TelnyxTranscriptionLanguage'
transcription_model:
description: The model to use for transcription.
type: string
enum:
- openai/whisper-tiny
- openai/whisper-large-v3-turbo
default: openai/whisper-tiny
TranscriptionEngineCohereConfig:
type: object
title: Transcription engine Cohere config
properties:
transcription_engine:
type: string
enum:
- Cohere
description: Engine identifier for Cohere transcription service
transcription_model:
description: The model to use for transcription.
type: string
enum:
- cohere/ar-stt
default: cohere/ar-stt
language:
type: string
description: The language of the audio to be transcribed. Unlike other self-hosted models, Cohere does not auto-detect
the language; `auto` is not supported.
enum:
- ar
- en
default: ar
example: ar
TranscriptionEngineDeepgramConfig:
oneOf:
- $ref: '#/components/schemas/DeepgramNova2Config'
- $ref: '#/components/schemas/DeepgramNova2SpecialtyConfig'
- $ref: '#/components/schemas/DeepgramNova3Config'
- $ref: '#/components/schemas/DeepgramNova3MedicalConfig'
- $ref: '#/components/schemas/DeepgramFluxConfig'
- $ref: '#/components/schemas/DeepgramFluxMultiConfig'
discriminator:
propertyName: transcription_model
mapping:
deepgram/nova-2: '#/components/schemas/DeepgramNova2Config'
deepgram/nova-2-medical: '#/components/schemas/DeepgramNova2SpecialtyConfig'
deepgram/nova-2-phonecall: '#/components/schemas/DeepgramNova2SpecialtyConfig'
deepgram/nova-3: '#/components/schemas/DeepgramNova3Config'
deepgram/nova-3-medical: '#/components/schemas/DeepgramNova3MedicalConfig'
deepgram/flux: '#/components/schemas/DeepgramFluxConfig'
deepgram/flux-multi: '#/components/schemas/DeepgramFluxMultiConfig'
TranscriptionEngineGoogleConfig:
type: object
title: Transcription engine Google config
properties:
transcription_engine:
type: string
enum:
- Google
description: Engine identifier for Google transcription service
language:
$ref: '#/components/schemas/GoogleTranscriptionLanguage'
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
enable_speaker_diarization:
type: boolean
description: Enables speaker diarization.
default: false
example: true
min_speaker_count:
description: Defines minimum number of speakers in the conversation.
type: integer
example: 4
default: 2
format: int32
max_speaker_count:
description: Defines maximum number of speakers in the conversation.
type: integer
example: 4
default: 6
format: int32
profanity_filter:
description: Enables profanity_filter.
type: boolean
default: false
example: true
use_enhanced:
description: Enables enhanced transcription, this works for models `phone_call` and `video`.
type: boolean
default: false
example: true
model:
description: The model to use for transcription.
type: string
enum:
- latest_long
- latest_short
- command_and_search
- phone_call
- video
- default
- medical_conversation
- medical_dictation
hints:
description: Hints to improve transcription accuracy.
type: array
items:
type: string
default: []
example: []
speech_context:
description: Speech context to improve transcription accuracy.
type: array
items:
type: object
properties:
phrases:
type: array
items:
type: string
default: []
example: []
boost:
type: number
description: Boost factor for the speech context.
default: 1.0
minimum: 0.0
maximum: 20.0
example: 1.0
TranscriptionEngineHumainConfig:
type: object
title: Transcription engine Humain config
properties:
transcription_engine:
type: string
enum:
- Humain
description: Engine identifier for Humain transcription service
transcription_model:
description: The model to use for transcription.
type: string
enum:
- humain/realtime
default: humain/realtime
language:
type: string
description: The language of the audio to be transcribed. `codeswitch` enables Arabic/English code-switching. `auto`
resolves server-side to code-switching.
enum:
- ar
- en
- codeswitch
- auto
default: en
example: en
TranscriptionEngineParakeetConfig:
type: object
title: Transcription engine Parakeet config
properties:
transcription_engine:
type: string
enum:
- Parakeet
description: Engine identifier for Parakeet transcription service
transcription_model:
description: The model to use for transcription.
type: string
enum:
- nvidia/parakeet-v3
- omi-health/omi-med-stt-v1
default: nvidia/parakeet-v3
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
TranscriptionEngineReson8Config:
type: object
title: Transcription engine Reson8 config
properties:
transcription_engine:
type: string
enum:
- Reson8
description: Engine identifier for Reson8 transcription service
transcription_model:
description: The model to use for transcription.
type: string
enum:
- reson8/turns
default: reson8/turns
language:
type: string
description: The language of the audio to be transcribed. `auto` (the default, also applied when `language` is omitted)
enables automatic language detection.
enum:
- auto
- nl
- en
- fr
- fy
- de
- it
- pl
- pt
- es
- sv
default: auto
example: auto
TranscriptionEngineSonioxConfig:
type: object
title: Transcription engine Soniox config
required:
- transcription_engine
properties:
transcription_engine:
type: string
enum:
- Soniox
description: Engine identifier for Soniox transcription service
transcription_model:
description: The model to use for transcription.
type: string
enum:
- soniox/stt-rt-v4
default: soniox/stt-rt-v4
language:
type: string
description: ISO 639-1 language hint (e.g. `en`, `es`), or `auto` to omit the hint and let Soniox auto-detect supported
languages multilingually.
default: auto
example: auto
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
enable_endpoint_detection:
type: boolean
description: When true, Soniox emits end-of-utterance events at the cadence configured by `max_endpoint_delay_ms`.
default: false
example: false
max_endpoint_delay_ms:
type: integer
minimum: 500
maximum: 3000
description: 'Maximum silence (in milliseconds) before Soniox emits an end-of-utterance event. Only honored when
`enable_endpoint_detection` is true. Range: 500-3000 ms.'
example: 1000
TranscriptionEngineSpeechmaticsConfig:
type: object
title: Transcription engine Speechmatics config
properties:
transcription_engine:
type: string
enum:
- Speechmatics
description: Engine identifier for Speechmatics transcription service
language:
$ref: '#/components/schemas/SpeechmaticsTranscriptionLanguage'
transcription_model:
description: The model to use for transcription. `speechmatics/linden-1` is a preview, vendor-hosted model with
its own language support (see `language`).
type: string
enum:
- speechmatics/standard
- speechmatics/linden-1
default: speechmatics/standard
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
TranscriptionEngineTelnyxConfig:
type: object
title: Transcription engine Telnyx config
properties:
transcription_engine:
type: string
enum:
- Telnyx
description: Engine identifier for Telnyx transcription service
language:
$ref: '#/components/schemas/TelnyxTranscriptionLanguage'
transcription_model:
description: The model to use for transcription.
type: string
enum:
- openai/whisper-tiny
- openai/whisper-large-v3-turbo
default: openai/whisper-tiny
TranscriptionEngineXaiConfig:
type: object
title: Transcription engine xAI config
properties:
transcription_engine:
type: string
enum:
- xAI
description: Engine identifier for xAI transcription service
language:
$ref: '#/components/schemas/XaiTranscriptionLanguage'
transcription_model:
description: The model to use for transcription.
type: string
enum:
- xai/grok-stt
default: xai/grok-stt
interim_results:
type: boolean
description: Whether to send also interim results. If set to false, only final results will be sent.
default: false
example: true
TranscriptionEvent:
type: object
title: Transcription Event
properties:
data:
$ref: '#/components/schemas/Transcription'
TranscriptionFallbackModel:
title: TranscriptionFallbackModel
description: A streaming speech-to-text model that takes over transcription when the model in use fails.
type: object
properties:
model:
type: string
enum:
- deepgram/flux
- deepgram/nova-3
- deepgram/nova-2
- assemblyai/universal-3-5-pro
- assemblyai/universal-streaming
- xai/grok-stt
- soniox/stt-rt-v4
- soniox/stt-rt-v5
- humain/realtime
- reson8/turns
description: 'The fallback model. It must be a streaming model other than `transcription.model` and the other fallbacks:
`deepgram/flux`, `deepgram/nova-3`, `deepgram/nova-2`, `assemblyai/universal-3-5-pro` (or its legacy alias `assemblyai/universal-streaming`),
`xai/grok-stt`, `soniox/stt-rt-v4`, `soniox/stt-rt-v5`, `humain/realtime`, or `reson8/turns`.'
language:
type:
- string
- 'null'
description: The language the fallback transcribes. Omit it or set it to `null` to use the language of `transcription.model`.
The request is rejected when the fallback model doesn't support the language it would run.
settings:
anyOf:
- $ref: '#/components/schemas/TranscriptionSettingsConfig'
- type: 'null'
description: Settings for the fallback, with the same fields and limits as `transcription.settings`. Fields that
don't apply to this model's provider are dropped, and the provider's defaults fill in the rest. Omit it or set
it to `null` to use the settings of `transcription.model` where they apply to this model.
required:
- model
example:
model: deepgram/nova-3
language: en
settings:
keyterm: Telnyx,VoIP,SIP
TranscriptionLanguage:
title: Transcription Language
type: string
description: 'Language code for transcription. Note: Not all languages are supported by all transcription engines (google,
telnyx, deepgram). See engine-specific documentation for supported values.'
example: en-US
default: en-US
enum:
- af
- af-ZA
- am
- am-ET
- ar
- ar-AE
- ar-BH
- ar-DZ
- ar-EG
- ar-IL
- ar-IQ
- ar-JO
- ar-KW
- ar-LB
- ar-MA
- ar-MR
- ar-OM
- ar-PS
- ar-QA
- ar-SA
- ar-TN
- ar-YE
- as
- auto_detect
- az
- az-AZ
- ba
- be
- bg
- bg-BG
- bn
- bn-BD
- bn-IN
- bo
- br
- bs
- bs-BA
- ca
- ca-ES
- cs
- cs-CZ
- cy
- da
- da-DK
- de
- de-AT
- de-CH
- de-DE
- el
- el-GR
- en
- en-AU
- en-CA
- en-GB
- en-GH
- en-HK
- en-IE
- en-IN
- en-KE
- en-NG
- en-NZ
- en-PH
- en-PK
- en-SG
- en-TZ
- en-US
- en-ZA
- es
- es-419
- es-AR
- es-BO
- es-CL
- es-CO
- es-CR
- es-DO
- es-EC
- es-ES
- es-GT
- es-HN
- es-MX
- es-NI
- es-PA
- es-PE
- es-PR
- es-PY
- es-SV
- es-US
- es-UY
- es-VE
- et
- et-EE
- eu
- eu-ES
- fa
- fa-IR
- fi
- fi-FI
- fil-PH
- fo
- fr
- fr-BE
- fr-CA
- fr-CH
- fr-FR
- gl
- gl-ES
- gu
- gu-IN
- ha
- haw
- he
- hi
- hi-IN
- hr
- hr-HR
- ht
- hu
- hu-HU
- hy
- hy-AM
- id
- id-ID
- is
- is-IS
- it
- it-CH
- it-IT
- iw-IL
- ja
- ja-JP
- jv-ID
- jw
- ka
- ka-GE
- kk
- kk-KZ
- km
- km-KH
- kn
- kn-IN
- ko
- ko-KR
- la
- lb
- ln
- lo
- lo-LA
- lt
- lt-LT
- lv
- lv-LV
- mg
- mi
- mk
- mk-MK
- ml
- ml-IN
- mn
- mn-MN
- mr
- mr-IN
- ms
- ms-MY
- mt
- my
- my-MM
- ne
- ne-NP
- nl
- nl-BE
- nl-NL
- nn
- 'no'
- no-NO
- oc
- pa
- pa-Guru-IN
- pl
- pl-PL
- ps
- pt
- pt-BR
- pt-PT
- ro
- ro-RO
- ru
- ru-RU
- rw-RW
- sa
- sd
- si
- si-LK
- sk
- sk-SK
- sl
- sl-SI
- sn
- so
- sq
- sq-AL
- sr
- sr-RS
- ss-latn-za
- st-ZA
- su
- su-ID
- sv
- sv-SE
- sw
- sw-KE
- sw-TZ
- ta
- ta-IN
- ta-LK
- ta-MY
- ta-SG
- te
- te-IN
- tg
- th
- th-TH
- tk
- tl
- tn-latn-za
- tr
- tr-TR
- ts-ZA
- tt
- uk
- uk-UA
- ur
- ur-IN
- ur-PK
- uz
- uz-UZ
- ve-ZA
- vi
- vi-VN
- xh-ZA
- yi
- yo
- yue-Hant-HK
- zh
- zh-TW
- zu-ZA
TranscriptionSettings:
properties:
model:
type: string
enum:
- deepgram/flux
- deepgram/nova-3
- deepgram/nova-2
- speechmatics/standard
- speechmatics/linden-1
- azure/fast
- assemblyai/universal-3-5-pro
- assemblyai/universal-streaming
- xai/grok-stt
- soniox/stt-rt-v4
- soniox/stt-rt-v5
- nvidia/parakeet-v3
- omi-health/omi-med-stt-v1
- humain/realtime
- reson8/turns
- cohere/ar-stt
- telnyx/basira
- distil-whisper/distil-large-v2
- openai/whisper-large-v3-turbo
description: 'The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise.
- `deepgram/flux` is optimized for turn-taking with multilingual language hints.
- `deepgram/nova-3` is multilingual with automatic language detection.
- `deepgram/nova-2` is Deepgram''s previous-generation multilingual model.
- `speechmatics/standard` is a Speechmatics model self-hosted by Telnyx; it supports a fixed set of language packs
(including bilingual packs such as `ar_en`) and defaults to `en`.
- `speechmatics/linden-1` (preview) is a vendor-hosted streaming model with no auto-detect; set `language` from
Speechmatics'' Realtime language list (defaults to `en`).
- `azure/fast` is a multilingual Azure transcription model.
- `assemblyai/universal-3-5-pro` is a multilingual streaming model with configurable turn detection. The legacy
alias `assemblyai/universal-streaming` is still accepted and resolves to the same model.
- `xai/grok-stt` is a multilingual Grok STT model.
- `soniox/stt-rt-v4` and `soniox/stt-rt-v5` are multilingual streaming models with automatic language detection,
configurable endpointing, term biasing (`context`), and `language_hints`.
- `nvidia/parakeet-v3` is a multilingual transcription model with automatic language detection.
- `omi-health/omi-med-stt-v1` is an English-only medical transcription model (Parakeet-based).
- `humain/realtime` is a streaming model with native Arabic and Arabic/English code-switching support.
- `reson8/turns` is a turn-based streaming model covering 10 European languages with automatic language detection.
- `cohere/ar-stt` is a non-streaming Arabic and English transcription model.
- `telnyx/basira` is a non-streaming Arabic transcription model.'
language:
type: string
description: 'The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will
automatically detect the language. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection
controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`,
`ru`, `pt`, `ja`, `it`, and `nl`. For `soniox/stt-rt-v4` and `soniox/stt-rt-v5`, `auto` omits the language hint
and lets Soniox auto-detect; ISO 639-1 codes (e.g. `en`, `es`) bias detection toward that language; `settings.language_hints`
can pin multiple languages at once instead. For `humain/realtime`, supported values are `ar`, `en`, `codeswitch`
(Arabic/English code-switching), and `auto` (resolves server-side to code-switching). Unlike other models, `humain/realtime`
does not fall back to `auto` when `language` is omitted — omitting it applies `en` instead. For `reson8/turns`,
supported values are `auto` (or unset) for automatic language detection, and the language codes `nl`, `en`, `fr`,
`fy`, `de`, `it`, `pl`, `pt`, `es`, and `sv` to fix the transcription language. For `cohere/ar-stt`, supported
values are `ar` and `en`; unlike other models, this model does not auto-detect and defaults to `ar` when `language`
is omitted. For `speechmatics/linden-1`, there is no auto-detect; set a code from Speechmatics'' Realtime language
list (67 language codes, including `es-bilingual-en` for Spanish and English bilingual, and the spelling and script
variants `en-US`, `en-GB`, `en-AU`, `cmn-Hans`, and `cmn-Hant`; `en` alone uses the default spelling); unset defaults
to `en`, while an explicit `auto`, `auto_beta`, or `multi` is rejected with a 400.'
api_key_ref:
title: Api Key Ref
type: string
description: Integration secret identifier for the transcription provider API key. Currently used for Azure transcription
regions that require a customer-provided API key.
region:
title: Region
type: string
description: Region on third party cloud providers (currently Azure) if using one of their models. Some regions
require `api_key_ref`.
settings:
$ref: '#/components/schemas/TranscriptionSettingsConfig'
fallback_models:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/TranscriptionFallbackModel'
maxItems: 3
description: 'Up to 3 streaming models that take over transcription, in this order, when the model in use fails,
at the start of a call or mid-call. `model` must be a streaming model too, and must support `language` alongside
other models. On update, a list replaces the stored one: omit the field to keep the stored list, or send `null`
or `[]` to remove it. When an update changes `model` or `language`, stored fallbacks that no longer fit are removed
without an error. Can''t be combined with `challenger`, the language booster; to replace a stored language booster,
send `challenger: null` in the same request.'
example:
- model: deepgram/nova-3
language: en
- model: soniox/stt-rt-v5
settings:
context: Telnyx,VoIP,SIP
challenger:
anyOf:
- $ref: '#/components/schemas/TranscriptionChallenger'
- type: 'null'
description: 'The language booster: a second model that transcribes alongside `model`, and the rule that decides
which transcript the assistant uses. Both models must be streaming, or both non-streaming, and, except with `merge_words`,
`model` must support `language` alongside another model (for example, `cohere/ar-stt` supports only `ar` there).
If the language booster can''t run, the call runs on `model` alone; if either model fails mid-call, the call continues
on the other. On update, omit the field to keep the stored language booster, or send `null` to remove it. When
an update changes `model` or `language` and the stored language booster no longer fits, it is removed without
an error. Can''t be combined with `fallback_models`; to replace stored fallbacks, send `fallback_models: []` in
the same request.'
type: object
TranscriptionSettingsConfig:
properties:
smart_format:
title: Smart Format
type: boolean
numerals:
title: Numerals
type: boolean
eot_threshold:
title: Eot Threshold
type: number
description: Available only for deepgram/flux. Confidence required to trigger an end of turn. Higher values = more
reliable turn detection but slightly increased latency.
minimum: 0.5
maximum: 0.9
default: 0.8
eot_timeout_ms:
title: Eot Timeout Ms
type: integer
description: Available only for deepgram/flux. Maximum milliseconds of silence before forcing an end of turn, regardless
of confidence.
minimum: 500
maximum: 10000
default: 5000
eager_eot_threshold:
title: Eager Eot Threshold
type: number
minimum: 0.3
maximum: 0.9
default: 0.8
description: Available only for deepgram/flux. Confidence threshold for eager end of turn detection. Must be lower
than or equal to eot_threshold. Setting this equal to eot_threshold effectively disables eager end of turn.
keyterm:
title: Keyterm
type: string
description: A comma-separated list of key terms to boost for recognition during transcription, used by Deepgram,
Reson8, Speechmatics Linden 1 and AssemblyAI models. Helps improve accuracy for domain-specific terminology, proper
nouns, or uncommon words. At most 1000 characters in total. For assemblyai/universal-3-5-pro (and its legacy alias
assemblyai/universal-streaming), also at most 100 terms of up to 50 characters each. This field may be templated
with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache
syntax (e.g. `Telnyx,{{customer_name}},VoIP`). Variables are resolved at call time before the value is sent to
the speech-to-text engine.
maxLength: 1000
remove_disfluencies:
title: Remove Disfluencies
type: boolean
default: false
description: Available only for speechmatics/linden-1. When true, filler words such as "um" and "uh" are removed
from the transcript. Disfluency removal is supported only for `ar`, `cmn`, `da`, `de`, `el`, `en`, `es`, `fr`,
`he`, `hi`, `hu`, `it`, `ja`, `nl`, `pl`, `pt`, and `ru`, determined by the base language (so `en-US`, `en-GB`,
`en-AU`, `cmn-Hans`, and `cmn-Hant` are supported); for other languages, filler words remain in the transcript.
end_of_turn_confidence_threshold:
title: End Of Turn Confidence Threshold
type: number
minimum: 0
maximum: 1
description: Deprecated and ignored. Accepted for backwards compatibility. AssemblyAI turn detection is configured
with min_turn_silence and max_turn_silence.
deprecated: true
prompt:
title: Prompt
type: string
maxLength: 1750
description: Available only for assemblyai/universal-3-5-pro (and its legacy alias assemblyai/universal-streaming).
Context about the conversation (domain, names, terms) to improve transcription; describe the content, do not give
instructions. Leave empty unless needed. At most 1750 characters.
min_turn_silence:
title: Min Turn Silence
type: integer
minimum: 100
maximum: 5000
default: 400
description: Available only for assemblyai/universal-3-5-pro (and its legacy alias assemblyai/universal-streaming).
Minimum duration of silence in milliseconds before a turn can end. Must be less than or equal to max_turn_silence.
max_turn_silence:
title: Max Turn Silence
type: integer
minimum: 100
maximum: 5000
default: 1280
description: Available only for assemblyai/universal-3-5-pro (and its legacy alias assemblyai/universal-streaming).
Maximum duration of silence in milliseconds before forcing an end of turn.
interim_results:
title: Interim Results
type: boolean
default: false
description: Available only for soniox/stt-rt-v4 and soniox/stt-rt-v5. When true, Soniox streams interim (non-final)
results in addition to finalized transcripts.
enable_endpoint_detection:
title: Enable Endpoint Detection
type: boolean
default: false
description: Available only for soniox/stt-rt-v4 and soniox/stt-rt-v5. When true, Soniox emits end-of-utterance
events at the cadence configured by `max_endpoint_delay_ms`.
max_endpoint_delay_ms:
title: Max Endpoint Delay Ms
type: integer
minimum: 500
maximum: 3000
description: Available only for soniox/stt-rt-v4 and soniox/stt-rt-v5. Maximum silence (in milliseconds) before
Soniox emits an end-of-utterance event. Only honored when `enable_endpoint_detection` is true.
context:
title: Context
type: string
maxLength: 10000
description: Available only for soniox/stt-rt-v4 and soniox/stt-rt-v5. A comma-separated list of terms to boost
for recognition during transcription, for staff names, building names, or other domain-specific vocabulary. This
field may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
using mustache syntax (e.g. `Telnyx,{{customer_name}},VoIP`). Variables are resolved at call time before the value
is sent to Soniox.
language_hints:
title: Language Hints
type: array
items:
type: string
description: Available only for soniox/stt-rt-v4 and soniox/stt-rt-v5. A list of ISO 639-1 language codes (e.g.
`["nl", "fr"]`) to pin recognition to multiple languages at once, overriding the single hint derived from `language`.
type: object
title: TranscriptionSettingsConfig
TranscriptionStartRequest:
type: object
title: Transcription start request
properties:
transcription_engine:
description: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` - `Telnyx` are supported for
backward compatibility.
type: string
enum:
- Google
- Telnyx
- Deepgram
- Azure
- xAI
- AssemblyAI
- Speechmatics
- Soniox
- Parakeet
- Humain
- Reson8
- Cohere
- A
- B
default: Google
example: Google
transcription_engine_config:
oneOf:
- $ref: '#/components/schemas/TranscriptionEngineGoogleConfig'
- $ref: '#/components/schemas/TranscriptionEngineTelnyxConfig'
- $ref: '#/components/schemas/TranscriptionEngineDeepgramConfig'
- $ref: '#/components/schemas/TranscriptionEngineAzureConfig'
- $ref: '#/components/schemas/TranscriptionEngineXaiConfig'
- $ref: '#/components/schemas/TranscriptionEngineAssemblyaiConfig'
- $ref: '#/components/schemas/TranscriptionEngineSpeechmaticsConfig'
- $ref: '#/components/schemas/TranscriptionEngineSonioxConfig'
- $ref: '#/components/schemas/TranscriptionEngineParakeetConfig'
- $ref: '#/components/schemas/TranscriptionEngineHumainConfig'
- $ref: '#/components/schemas/TranscriptionEngineReson8Config'
- $ref: '#/components/schemas/TranscriptionEngineCohereConfig'
- $ref: '#/components/schemas/TranscriptionEngineAConfig'
- $ref: '#/components/schemas/TranscriptionEngineBConfig'
discriminator:
propertyName: transcription_engine
mapping:
Google: '#/components/schemas/TranscriptionEngineGoogleConfig'
Telnyx: '#/components/schemas/TranscriptionEngineTelnyxConfig'
Deepgram: '#/components/schemas/TranscriptionEngineDeepgramConfig'
Azure: '#/components/schemas/TranscriptionEngineAzureConfig'
xAI: '#/components/schemas/TranscriptionEngineXaiConfig'
AssemblyAI: '#/components/schemas/TranscriptionEngineAssemblyaiConfig'
Speechmatics: '#/components/schemas/TranscriptionEngineSpeechmaticsConfig'
Soniox: '#/components/schemas/TranscriptionEngineSonioxConfig'
Parakeet: '#/components/schemas/TranscriptionEngineParakeetConfig'
Humain: '#/components/schemas/TranscriptionEngineHumainConfig'
Reson8: '#/components/schemas/TranscriptionEngineReson8Config'
Cohere: '#/components/schemas/TranscriptionEngineCohereConfig'
A: '#/components/schemas/TranscriptionEngineAConfig'
B: '#/components/schemas/TranscriptionEngineBConfig'
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
transcription_tracks:
description: Indicates which leg of the call will be transcribed. Use `inbound` for the leg that requested the transcription,
`outbound` for the other leg, and `both` for both legs of the call. Will default to `inbound`.
type: string
example: both
default: inbound
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
transcription_engine: Google
transcription_engine_config:
transcription_engine: Google
language: en
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
TranscriptionStopRequest:
type: object
title: Transcription stop request
properties:
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
example:
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
TransferCallRequest:
type: object
title: Transfer Call Request
required:
- to
example:
to: +18005550100 or sip:username@sip.telnyx.com;secure=srtp
from: '+18005550101'
from_display_name: Company Name
audio_url: http://www.example.com/sounds/greeting.wav
send_digits_on_answer: wwww200
timeout_secs: 60
time_limit_secs: 60
webhook_url: https://www.example.com/server-b/
webhook_url_method: POST
answering_machine_detection: detect
answering_machine_detection_config:
total_analysis_time_millis: 5000
after_greeting_silence_millis: 1000
between_words_silence_millis: 1000
greeting_duration_millis: 1000
initial_silence_millis: 1000
maximum_number_of_words: 1000
maximum_word_length_millis: 2000
silence_threshold: 512
greeting_total_analysis_time_millis: 50000
greeting_silence_duration_millis: 2000
custom_headers:
- name: head_1
value: val_1
- name: head_2
value: val_2
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
early_media: true
media_encryption: SRTP
sip_auth_username: username
sip_auth_password: password
sip_headers:
- name: User-to-User
value: value
sip_transport_protocol: TLS
properties:
to:
description: The DID or SIP URI to dial out to. For SIP URI destinations, append `;secure=true` or `;secure=srtp`
to enable SRTP media encryption for that endpoint, or `;secure=dtls` to enable DTLS media encryption for that
endpoint. If `media_encryption` is set to `SRTP` or `DTLS`, it takes precedence over any per-endpoint `secure`
URI parameter. You may also append a comma followed by DTMF digits (e.g. `+18004247767,200`) to play those digits
as DTMF once the transfer destination answers — equivalent to setting `send_digits_on_answer` separately. If both
are present, the explicit `send_digits_on_answer` parameter takes precedence.
type: string
example: +18005550100 or sip:username@sip.telnyx.com;secure=srtp
from:
description: The `from` number to be used as the caller id presented to the destination (`to` number). The number
should be in +E164 format. This attribute will default to the `to` number of the original call if omitted.
type: string
example: '+18005550101'
diversion:
description: The `to` number of an active inbound call, in +E164 format. Telnyx checks whether there is currently
an active inbound call where `to` matches this `diversion` value and `from` matches the `from` number supplied
for this request. If such a call exists, the `from` number is treated as verified (since it is already on an active
inbound call to you) and can be used as the caller id for this outbound call.
type: string
example: '+18005550101'
from_display_name:
description: The `from_display_name` string to be used as the caller id name (SIP From Display Name) presented to
the destination (`to` number). The string should have a maximum of 128 characters, containing only letters, numbers,
spaces, and -_~!.+ special characters. If ommited, the display name will be the same as the number in the `from`
field.
type: string
example: Company Name
privacy:
type: string
description: Indicates the privacy level to be used for the call. When set to `id`, caller ID information (name
and number) will be hidden from the called party. When set to `none` or omitted, caller ID will be shown normally.
enum:
- id
- none
example: id
audio_url:
type: string
example: http://example.com/message.wav
description: The URL of a file to be played back when the transfer destination answers before bridging the call.
The URL can point to either a WAV or MP3 file. media_name and audio_url cannot be used together in one request.
send_digits_on_answer:
type: string
example: wwww200
description: 'DTMF digits to send automatically after the transfer destination answers. Useful for reaching an extension
behind an IVR (e.g. `"200"` to dial extension 200 once the called party picks up). Allowed characters: `0-9`,
`A-D`, `w` (0.5s pause), `W` (1s pause), `*`, `#`. Maximum 64 characters. When omitted, no automatic DTMF is sent.
May also be supplied inline by appending `,` to `to` (e.g. `to=+18004247767,200`); if both forms are present,
this explicit field takes precedence.'
early_media:
type: boolean
default: true
example: false
description: If set to false, early media will not be passed to the originating leg.
media_name:
type: string
example: my_media_uploaded_to_media_storage_api
description: The media_name of a file to be played back when the transfer destination answers before bridging the
call. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization.
The file must either be a WAV or MP3 file.
timeout_secs:
description: The number of seconds that Telnyx will wait for the call to be answered by the destination to which
it is being transferred. If the timeout is reached before an answer is received, the call will hangup and a `call.hangup`
webhook with a `hangup_cause` of `timeout` will be sent. Minimum value is 5 seconds. Maximum value is 600 seconds.
default: 30
type: integer
example: 60
format: int32
time_limit_secs:
description: Sets the maximum duration of a Call Control Leg in seconds. If the time limit is reached, the call
will hangup and a `call.hangup` webhook with a `hangup_cause` of `time_limit` will be sent. For example, by setting
a time limit of 120 seconds, a Call Leg will be automatically terminated two minutes after being answered. The
default time limit is 14400 seconds or 4 hours and this is also the maximum allowed call length.
default: 14400
type: integer
example: 600
format: int32
minimum: 30
maximum: 14400
park_after_unbridge:
description: Specifies behavior after the bridge ends (i.e. the opposite leg either hangs up or is transferred).
If supplied with the value `self`, the current leg will be parked after unbridge. If not set, the default behavior
is to hang up the leg.
type: string
example: self
answering_machine_detection:
description: 'Enables Answering Machine Detection. When a call is answered, Telnyx runs real-time detection to determine
if it was picked up by a human or a machine and sends an `call.machine.detection.ended` webhook with the analysis
result. If ''greeting_end'' or ''detect_words'' is used and a ''machine'' is detected, you will receive another
''call.machine.greeting.ended'' webhook when the answering machine greeting ends with a beep or silence. If `detect_beep`
is used, you will only receive ''call.machine.greeting.ended'' if a beep is detected. If `answering_machine_detection`
is set to `premium_ios_call_screening_detection`, Premium AMD runs with iOS Call Screening support: after an initial
`machine` result, Telnyx listens for the iOS call-screening prompt to end or for an Apple Call Screening tone,
sends `call.machine.premium.greeting.ended` with `result=prompt_ended` or `call.machine.premium.call_screening.detected`
with `result=screening` respectively. When the Apple Call Screening tone is detected, Premium AMD is restarted
on the screened call and a `call.machine.premium.detection.ended` webhook with the post-screening classification
follows.'
default: disabled
type: string
enum:
- premium
- premium_ios_call_screening_detection
- detect
- detect_beep
- detect_words
- greeting_end
- disabled
answering_machine_detection_config:
description: Optional configuration parameters to modify 'answering_machine_detection' performance. Only `total_analysis_time_millis`
and `greeting_duration_millis` parameters are applicable when `premium` is selected as answering_machine_detection.
`prompt_end_timeout_millis` is additionally applicable when `premium_ios_call_screening_detection` is selected.
type: object
properties:
total_analysis_time_millis:
description: Maximum timeout threshold for overall detection.
default: 3500
type: integer
example: 5000
format: int32
beep_detection_profile:
description: Selects which detectors must validate a beep. `both` requires the amplitude and frequency detectors
to agree. `freq_only` uses the frequency detector alone, for beeps whose volume is too unsteady for the default
profile.
default: both
type: string
example: freq_only
enum:
- both
- freq_only
beep_min_frequency_hz:
description: Lowest frequency, in Hz, that a tone must reach to be treated as a beep. Raising it above 480 excludes
North American ringback (440 + 480 Hz), which can otherwise be reported as a beep when the `freq_only` profile
is in use. Only used when beep detection is active.
type: integer
example: 550
format: int32
minimum: 200
maximum: 4000
beep_max_frequency_hz:
description: Highest frequency, in Hz, that a tone can reach and still be treated as a beep. Only used when
beep detection is active.
type: integer
example: 2000
format: int32
minimum: 200
maximum: 4000
beep_min_tone_duration_millis:
description: Shortest tone, in milliseconds, that can be treated as a beep. Raising it rejects brief tones such
as call-progress blips. Only used when beep detection is active.
type: integer
example: 300
format: int32
minimum: 50
maximum: 5000
beep_spectral_confirmation:
description: When enabled, a candidate beep must pass an additional spectral check before it is reported. Only
used when beep detection is active.
type: boolean
example: true
beep_spectral_window_millis:
description: Length of the spectral confirmation window, in milliseconds. Only used when beep detection is active.
type: integer
example: 100
format: int32
minimum: 20
maximum: 1000
beep_spectral_min_purity:
description: Minimum spectral purity, from 0 to 1, for a tone to be treated as a beep. Raising it rejects mixed
tones such as ringback, which combines two frequencies. Only used when beep detection is active.
type: number
example: 0.8
minimum: 0
maximum: 1
beep_spectral_reject_fax_cng:
description: When enabled, the fax CNG tone is rejected rather than reported as a beep. Only used when beep
detection is active.
type: boolean
example: true
after_greeting_silence_millis:
description: Silence duration threshold after a greeting message or voice for it be considered human.
default: 800
type: integer
example: 1000
format: int32
between_words_silence_millis:
description: Maximum threshold for silence between words.
default: 50
type: integer
example: 100
format: int32
greeting_duration_millis:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine.
default: 3500
type: integer
example: 1500
format: int32
initial_silence_millis:
description: If initial silence duration is greater than this value, consider it a machine.
default: 3500
type: integer
example: 1800
format: int32
maximum_number_of_words:
description: If number of detected words is greater than this value, consder it a machine.
default: 5
type: integer
example: 3
format: int32
maximum_word_length_millis:
description: If a single word lasts longer than this threshold, consider it a machine.
default: 3500
type: integer
example: 2000
format: int32
silence_threshold:
description: Minimum noise threshold for any analysis.
default: 256
type: integer
example: 512
format: int32
greeting_total_analysis_time_millis:
description: If machine already detected, maximum timeout threshold to determine the end of the machine greeting.
default: 5000
type: integer
example: 7500
format: int32
greeting_silence_duration_millis:
description: If machine already detected, maximum threshold for silence between words. If exceeded, the greeting
is considered ended.
default: 1500
type: integer
example: 2000
format: int32
prompt_end_timeout_millis:
description: Maximum time Telnyx waits, in milliseconds, for the iOS call-screening prompt to end after Premium
AMD initially detects a `machine`. Used when `answering_machine_detection` is `premium_ios_call_screening_detection`.
Defaults to 5000 milliseconds.
default: 5000
type: integer
example: 5000
format: int32
minimum: 1000
maximum: 120000
custom_headers:
description: Custom headers to be added to the SIP INVITE.
type: array
example:
- name: head_1
value: val_1
- name: head_2
value: val_2
items:
$ref: '#/components/schemas/CustomSipHeader'
client_state:
description: Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
target_leg_client_state:
description: Use this field to add state to every subsequent webhook for the new leg. It must be a valid Base-64
encoded string.
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
command_id:
description: Use this field to avoid duplicate commands. Telnyx will ignore any command with the same `command_id`
for the same `call_control_id`.
type: string
example: 891510ac-f3e4-11e8-af5b-de00688a4901
media_encryption:
description: 'Defines whether media should be encrypted on the new call leg. For SIP URI destinations, media encryption
can also be requested per endpoint with the `secure` URI parameter: `;secure=true` or `;secure=srtp` enables SRTP,
and `;secure=dtls` enables DTLS. This parameter, when set to `SRTP` or `DTLS`, takes precedence over the per-endpoint
`secure` value.'
default: disabled
type: string
enum:
- disabled
- SRTP
- DTLS
sip_auth_username:
description: SIP Authentication username used for SIP challenges.
type: string
example: username
sip_auth_password:
description: SIP Authentication password used for SIP challenges.
type: string
example: password
sip_headers:
description: SIP headers to be added to the SIP INVITE. Currently only User-to-User header is supported.
type: array
example:
- name: User-to-User
value: value
items:
$ref: '#/components/schemas/SipHeader'
sip_transport_protocol:
description: Defines SIP transport protocol to be used on the call.
default: UDP
type: string
enum:
- UDP
- TCP
- TLS
sound_modifications:
$ref: '#/components/schemas/SoundModifications'
webhook_url:
description: Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.
type: string
example: https://www.example.com/server-b/
webhook_url_method:
description: HTTP request type used for `webhook_url`.
default: POST
type: string
enum:
- POST
- GET
example: GET
mute_dtmf:
description: When enabled, DTMF tones are not passed to the call participant. The webhooks containing the DTMF information
will be sent.
type: string
enum:
- none
- both
- self
- opposite
default: none
example: opposite
record:
description: Start recording automatically after an event. Disabled by default.
type: string
enum:
- record-from-answer
example: record-from-answer
record_channels:
description: Defines which channel should be recorded ('single' or 'dual') when `record` is specified.
type: string
enum:
- single
- dual
default: dual
example: single
record_format:
description: Defines the format of the recording ('wav' or 'mp3') when `record` is specified.
type: string
enum:
- wav
- mp3
default: mp3
example: wav
record_max_length:
description: Defines the maximum length for the recording in seconds when `record` is specified. The minimum value
is 0. The maximum value is 43200. The default value is 0 (infinite).
type: integer
format: int32
default: 0
example: 1000
record_timeout_secs:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected
when `record` is specified. The timer only starts when the speech is detected. Please note that call transcription
is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is
0 (infinite).
type: integer
format: int32
default: 0
example: 100
record_track:
description: The audio track to be recorded. Can be either `both`, `inbound` or `outbound`. If only single track
is specified (`inbound`, `outbound`), `channels` configuration is ignored and it will be recorded as mono (single
channel).
type: string
example: outbound
default: both
enum:
- both
- inbound
- outbound
record_trim:
description: When set to `trim-silence`, silence will be removed from the beginning and end of the recording.
enum:
- trim-silence
type: string
example: trim-silence
record_custom_file_name:
description: The custom recording file name to be used instead of the default `call_leg_id`. Telnyx will still add
a Unix timestamp suffix.
type: string
minLength: 1
maxLength: 40
example: my_recording_file_name
sip_region:
description: Defines the SIP region to be used for the call.
type: string
default: US
enum:
- US
- Europe
- Canada
- Australia
- Middle East
example: Canada
preferred_codecs:
description: The list of comma-separated codecs in order of preference to be used during the call. The codecs supported
are `G722`, `PCMU`, `PCMA`, `G729`, `OPUS`, `VP8`, `H264`, `AMR-WB`.
type: string
example: G722,PCMU,PCMA,G729,OPUS,VP8,H264
webhook_urls:
description: A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook
URLs associated with that event type will be called instead of `webhook_url`. Events not mapped here will use
the default `webhook_url`.
type: object
additionalProperties:
type: array
items:
type: string
format: uri
example:
call.answered:
- https://www.example.com/webhooks/answered
call.hangup:
- https://www.example.com/webhooks/hangup
webhook_urls_method:
description: HTTP request method to invoke `webhook_urls`.
type: string
enum:
- POST
- GET
default: POST
example: POST
webhook_retries_policies:
description: A map of event types to retry policies. Each retry policy contains an array of `retries_ms` specifying
the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.
type: object
additionalProperties:
type: object
properties:
retries_ms:
type: array
items:
type: integer
maxItems: 5
description: Array of delays in milliseconds between retry attempts. Total sum cannot exceed 60000ms.
example:
call.answered:
retries_ms:
- 1000
- 2000
- 5000
route_to_mobile:
description: When set to true, routes the call directly to the mobile device associated with the destination Telnyx
Mobile number, bypassing Inbound Calls Interception configured in the Telnyx Portal under Mobile Numbers → select
the number → Voice → Call Interception. Use this when transferring an intercepted call to the mobile device to
prevent the call from being intercepted again. Defaults to false.
type: boolean
default: false
example: true
TransferTool:
properties:
type:
type: string
enum:
- transfer
transfer:
$ref: '#/components/schemas/CallControlTransferToolParams'
type: object
required:
- type
- transfer
title: TransferTool
TriggerBrandSmsOtpRequest:
title: TriggerBrandSmsOtpRequest
required:
- pinSms
- successSms
type: object
properties:
pinSms:
title: Pinsms
type: string
description: SMS message template to send the OTP. Must include `@OTP_PIN@` placeholder which will be replaced with
the actual PIN
example: Your PIN is @OTP_PIN@
successSms:
title: Successsms
type: string
description: SMS message to send upon successful OTP verification
example: Verification successful!
description: Request body for triggering a Brand SMS OTP
TriggerBrandSmsOtpResponse:
title: TriggerBrandSmsOtpResponse
required:
- brandId
- referenceId
type: object
properties:
brandId:
title: Brandid
type: string
description: The Brand ID for which the OTP was triggered
example: 4b20019b-043a-78f8-0657-b3be3f4b4002
referenceId:
title: Referenceid
type: string
description: The reference ID that can be used to check OTP status
example: OTP4B2001
description: Response after successfully triggering a Brand SMS OTP
TriggerTestRunRequest:
properties:
destination_version_id:
type: string
title: Destination Version Id
description: Optional assistant version ID to use for this test run. If provided, the version must exist or a 400
error will be returned. If not provided, test will run on main version
example: 123e4567-e89b-12d3-a456-426614174000
type: object
title: TriggerTestRunRequest
description: 'Request model for triggering a single test run.
Optional request body for the trigger test run endpoint.'
TriggerTestSuiteRunsRequest:
properties:
destination_version_id:
type: string
title: Destination Version Id
description: Optional assistant version ID to use for all test runs in this suite. If provided, the version must
exist or a 400 error will be returned. If not provided, test will run on main version
example: 123e4567-e89b-12d3-a456-426614174000
type: object
title: TriggerTestSuiteRunsRequest
description: 'Request model for triggering test suite runs.
Optional request body for the trigger test suite runs endpoint.'
TtsServerEvent:
description: Union of all server-to-client WebSocket events for TTS streaming.
oneOf:
- $ref: '#/components/schemas/AudioChunkFrame'
- $ref: '#/components/schemas/FinalFrame'
- $ref: '#/components/schemas/ErrorFrame'
discriminator:
propertyName: type
mapping:
audio_chunk: '#/components/schemas/AudioChunkFrame'
final: '#/components/schemas/FinalFrame'
error: '#/components/schemas/ErrorFrame'
TwimlRecordingChannels:
type: integer
enum:
- 1
- 2
default: 2
example: 1
UUID:
title: UUID
type: string
format: uuid
description: Uniquely identifies the resource.
example: 542c3bca-d247-42bc-8fe7-e01d16ecd761
UacConnection:
type: object
title: UAC Connection
properties:
id:
type: string
description: Identifies the type of resource.
example: '1293384261075731499'
x-format: int64
record_type:
type: string
description: Identifies the type of the resource.
example: uac_connection
active:
type: boolean
description: Defaults to true
user_name:
type: string
description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric
values only (no spaces or special characters). At least one of the first 5 characters must be a letter.
example: myusername123
password:
type: string
description: The password to be used as part of the credentials. Must be 8 to 128 characters long. For primary accounts
created on or after September 8, 2026, this password is returned as `********`. The password is returned in full
on create, and on update only when that update changed the password. Accounts created before September 8, 2026
are unaffected.
example: my123secure456password789
created_at:
type: string
description: ISO-8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO-8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
type: string
sip_uri_calling_preference:
type: string
example: disabled
description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted)
then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also
choose to allow only calls that are originated on any Connections under your account (internal).
enum:
- disabled
- unrestricted
- internal
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Defaults to false and returns the saved value. Only JSON
true and false are accepted; null and non-boolean values are rejected. This preference is independent of default_on_hold_comfort_noise_enabled
and does not modify that setting. This API provisions the preference; call-processing behavior is implemented
separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/UacInbound'
outbound:
$ref: '#/components/schemas/UacOutbound'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
authentication:
type: string
description: The authentication strategy used by this connection.
enum:
- uac-authentication
example: uac-authentication
registration_status:
type:
- string
- 'null'
description: The most recently known SIP registration status for this UAC connection.
example: Registered
registration_status_updated_at:
type:
- string
- 'null'
description: ISO 8601 formatted date indicating when the registration status was last updated.
example: '2018-02-02T22:25:27.521Z'
fqdn:
type: string
description: The Telnyx-managed FQDN generated for the UAC connection.
example: abc123def456.uac.telnyx.com
fqdns:
type: array
description: FQDN records managed automatically by the UAC connection lifecycle.
items:
$ref: '#/components/schemas/Fqdn'
fqdn_outbound_authentication:
type: string
description: The fixed outbound authentication mode used by UAC FQDN records.
enum:
- credential-authentication
example: credential-authentication
internal_uac_settings:
$ref: '#/components/schemas/UacInternalSettings'
external_uac_settings:
$ref: '#/components/schemas/UacExternalSettings'
example:
id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type: uac_connection
active: true
user_name: myusername123
password: my123secure456password789
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
anchorsite_override: Latency
connection_name: string
sip_uri_calling_preference: disabled
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
call_cost_in_webhooks: false
webhook_timeout_secs: 25
tags:
- tag1
- tag2
rtcp_settings:
port: rtp+1
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 15
shaken_stir_enabled: true
simultaneous_ringing: enabled
outbound:
call_parking_enabled: true
ani_override: string
ani_override_type: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: string
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
authentication: uac-authentication
registration_status: Registered
registration_status_updated_at: '2018-02-02T22:25:27.521Z'
fqdn: abc123def456.uac.telnyx.com
fqdns:
- id: '1293384261075731499'
record_type: fqdn
connection_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
fqdn: abc123def456.uac.telnyx.com
port: 5060
dns_record_type: srv
created_at: '2018-02-02T22:25:27.521Z'
updated_at: '2018-02-02T22:25:27.521Z'
fqdn_outbound_authentication: credential-authentication
internal_uac_settings:
destination_uri: 14155550123@acme.sip.telnyx.com
external_uac_settings:
username: ext8492
password: testtesttest
proxy: sip-pbx.acme.example
auth_username: auth8492
from_user: '8492'
outbound_proxy: outbound.sip-pbx.acme.example:5061
expiration_sec: 600
transport: TLS
user_agent: Telnyx-Usage-Voice-Trunk/1.0
bridge_generate_comfort_noise_on_cn: false
description: A UAC (User Agent Client) Connection registers Telnyx to your PBX — the opposite of a standard SIP trunk,
where the PBX registers to Telnyx. Use UAC when your PBX doesn’t support outbound SIP registration or you need Telnyx
to maintain the registration.
UacExternalSettings:
type: object
title: UAC External Settings
description: External SIP peer settings used by Telnyx when registering to your PBX and routing outbound calls.
properties:
username:
type: string
minLength: 4
maxLength: 256
description: The SIP username used to authenticate with the external SIP peer for registrations and outbound calls.
Must start with a letter or number and contain only letters, numbers, hyphens, and underscores.
example: ext8492
password:
type: string
description: The SIP password used for digest authentication with the external SIP peer. For primary accounts created
on or after September 8, 2026, this password is returned as `********`. The password is returned in full on create,
and on update only when that update changed the password. Accounts created before September 8, 2026 are unaffected.
example: testtesttest
proxy:
type: string
description: The SIP proxy address of the external SIP peer used for registrations and outbound call routing.
example: sip-pbx.acme.example
auth_username:
type:
- string
- 'null'
maxLength: 256
description: The authentication username used in SIP digest authentication. If not set, the Username value will
be used.
example: auth8492
from_user:
type:
- string
- 'null'
description: The user portion of the SIP From header used in outbound requests. This controls the caller identity
presented to the external SIP peer.
example: '8492'
outbound_proxy:
type:
- string
- 'null'
description: An optional SIP proxy used to route outbound requests before reaching the external SIP peer.
example: outbound.sip-pbx.acme.example:5061
expiration_sec:
type:
- integer
- 'null'
minimum: 1
description: The registration interval, in seconds, indicating how often the system refreshes the SIP registration
with the external SIP peer.
example: 600
transport:
type:
- string
- 'null'
description: The transport protocol used for SIP signaling when communicating with the external SIP peer. One of
UDP, TLS, or TCP.
enum:
- UDP
- TLS
- TCP
- null
example: TLS
user_agent:
type:
- string
- 'null'
minLength: 1
maxLength: 256
pattern: ^[A-Za-z0-9._(),/ -]+$
description: Custom SIP User-Agent header value that Telnyx uses on outbound REGISTER and INVITE messages. Set to
null to use Telnyx's default User-Agent.
example: Telnyx-Usage-Voice-Trunk/1.0
example:
username: ext8492
password: testtesttest
proxy: sip-pbx.acme.example
auth_username: auth8492
from_user: '8492'
outbound_proxy: outbound.sip-pbx.acme.example:5061
expiration_sec: 600
transport: TLS
user_agent: Telnyx-Usage-Voice-Trunk/1.0
UacInbound:
type: object
title: UAC Inbound
example:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: enabled
sip_subdomain: abc123def456
sip_subdomain_receive_settings: only_my_connections
properties:
ani_number_format:
type: string
enum:
- +E.164
- E.164
- +E.164-national
- E.164-national
default: E.164-national
description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound
phone calls.
dnis_number_format:
type: string
enum:
- +e164
- e164
- national
- sip_username
default: e164
codecs:
type: array
items:
type: string
description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal
account, in priority order. This only works when the Connection the number is assigned to uses Media Handling
mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.'
default:
- G722
- G711U
- G711A
- G729
- OPUS
- H.264
default_routing_method:
type: string
enum:
- sequential
- round-robin
description: Default routing method to be used when a number is associated with the connection. Must be one of the
routing method types or left blank, other values are not allowed.
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
isup_headers_enabled:
type: boolean
default: false
description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and
only when using TCP or TLS transport.)
prack_enabled:
type: boolean
description: Enable PRACK messages as defined in RFC3262.
default: false
sip_compact_headers_enabled:
type: boolean
description: Defaults to true.
default: true
sip_region:
type: string
default: US
description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be
used.
enum:
- US
- Europe
- Australia
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
minimum: 1
maximum: 600
default: 90
shaken_stir_enabled:
type: boolean
description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE
message of inbound calls, even when using UDP transport.
default: false
simultaneous_ringing:
type: string
description: When enabled, allows multiple devices to ring simultaneously on incoming calls.
default: disabled
enum:
- disabled
- enabled
sip_subdomain:
type: string
description: The Telnyx-generated SIP subdomain for this UAC connection.
example: abc123def456
sip_subdomain_receive_settings:
type: string
description: Controls which SIP URI callers may reach this connection.
enum:
- only_my_connections
- from_anyone
example: only_my_connections
UacInboundRequest:
type: object
title: UAC Inbound Request
description: Inbound settings that can be supplied when creating or updating a UAC connection. The SIP subdomain fields
returned in UAC connection responses are generated by Telnyx and are not accepted as request parameters.
example:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: enabled
properties:
ani_number_format:
type: string
enum:
- +E.164
- E.164
- +E.164-national
- E.164-national
default: E.164-national
description: This setting allows you to set the format with which the caller's number (ANI) is sent for inbound
phone calls.
dnis_number_format:
type: string
enum:
- +e164
- e164
- national
- sip_username
default: e164
codecs:
type: array
items:
type: string
description: 'Defines the list of codecs that Telnyx will send for inbound calls to a specific number on your portal
account, in priority order. This only works when the Connection the number is assigned to uses Media Handling
mode: default. OPUS and H.264 codecs are available only when using TCP or TLS transport for SIP.'
default:
- G722
- G711U
- G711A
- G729
- OPUS
- H.264
default_routing_method:
type: string
enum:
- sequential
- round-robin
description: Default routing method to be used when a number is associated with the connection. Must be one of the
routing method types or left blank, other values are not allowed.
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of inbound calls to phone numbers associated with this connection.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
isup_headers_enabled:
type: boolean
default: false
description: When set, inbound phone calls will receive ISUP parameters via SIP headers. (Only when available and
only when using TCP or TLS transport.)
prack_enabled:
type: boolean
description: Enable PRACK messages as defined in RFC3262.
default: false
sip_compact_headers_enabled:
type: boolean
description: Defaults to true.
default: true
sip_region:
type: string
default: US
description: Selects which `sip_region` to receive inbound calls from. If null, the default region (US) will be
used.
enum:
- US
- Europe
- Australia
timeout_1xx_secs:
type: integer
description: Time(sec) before aborting if connection is not made.
minimum: 1
maximum: 120
default: 3
timeout_2xx_secs:
type: integer
description: 'Time(sec) before aborting if call is unanswered (min: 1, max: 600).'
minimum: 1
maximum: 600
default: 90
shaken_stir_enabled:
type: boolean
description: When enabled the SIP Connection will receive the Identity header with Shaken/Stir data in the SIP INVITE
message of inbound calls, even when using UDP transport.
default: false
simultaneous_ringing:
type: string
description: When enabled, allows multiple devices to ring simultaneously on incoming calls.
default: disabled
enum:
- disabled
- enabled
UacInternalSettings:
type: object
title: UAC Internal Settings
description: Internal Telnyx-side settings for a UAC connection.
properties:
destination_uri:
type: string
description: The SIP URI that Telnyx will call when handling an inbound request from the external peer. Do not include
a `sip:` prefix. The value must be in the format `userinfo@sip.telnyx.com` or `userinfo@sipdev.telnyx.com`;
the userinfo portion may contain only letters, digits, hyphens, and underscores.
example: 14155550123@acme.sip.telnyx.com
example:
destination_uri: 14155550123@acme.sip.telnyx.com
UacOutbound:
type: object
title: UAC Outbound
example:
call_parking_enabled: true
ani_override: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: US
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
properties:
call_parking_enabled:
type:
- boolean
- 'null'
default: false
description: Forces all SIP calls originated on this connection to be "parked" instead of "bridged" to the destination
specified on the URI. Parked calls will return ringback to the caller and will await for a Call Control command
to define which action will be taken next.
ani_override:
type: string
description: Set a phone number as the ani_override value to override caller id number on outbound calls.
default: ''
ani_override_type:
type: string
enum:
- always
- normal
- emergency
description: Specifies when we apply your ani_override setting. Only applies when ani_override is not blank.
default: always
channel_limit:
type: integer
default: null
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
instant_ringback_enabled:
type: boolean
default: true
description: When set, ringback will not wait for indication before sending ringback tone to calling party.
generate_ringback_tone:
type: boolean
default: false
description: Generate ringback tone through 183 session progress message with early media.
localization:
type: string
default: US
description: A 2-character country code specifying the country whose national dialing rules should be used. For
example, if set to `US` then any US number can be dialed without preprending +1 to the number. When left blank,
Telnyx will try US and GB dialing rules, in that order, by default.
example: US
t38_reinvite_source:
type: string
enum:
- telnyx
- customer
- disabled
- passthru
- caller-passthru
- callee-passthru
description: This setting only affects connections with Fax-type Outbound Voice Profiles. The setting dictates whether
or not Telnyx sends a t.38 reinvite. By default, Telnyx will send the re-invite. If set to `customer`,
the caller is expected to send the t.38 reinvite.
default: telnyx
outbound_voice_profile_id:
$ref: '#/components/schemas/connections_OutboundVoiceProfileId'
UnauthorizedError:
allOf:
- $ref: '#/components/schemas/GenericError'
- properties:
code:
example: '10009'
type: string
title:
example: Authentication failed
type: string
detail:
example: The required authentication headers were either invalid or not included in the request.
type: string
meta:
type: object
properties:
url:
type: string
example: https://developers.telnyx.com/docs/overview/errors/10009
type: object
UnexpectedError:
allOf:
- $ref: '#/components/schemas/GenericError'
- properties:
code:
example: '10007'
type: string
title:
example: Unexpected error
type: string
detail:
example: An unexpected error occurred.
type: string
meta:
type: object
properties:
url:
type: string
example: https://developers.telnyx.com/docs/overview/errors/10007
type: object
UnprocessableEntityError:
required:
- code
- title
properties:
code:
type: string
x-format: int64
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
UnsubscribeGroup:
type: object
required:
- id
- record_type
- name
- description
- created_at
- updated_at
properties:
id:
type: string
format: uuid
record_type:
type: string
enum:
- email_unsubscribe_group
description: View-only.
name:
type: string
minLength: 1
maxLength: 255
description:
type: string
nullable: true
description: Always present (not omit-nullable); `null` when unset.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
UnsubscribeGroupListResponse:
type: object
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/UnsubscribeGroup'
meta:
$ref: '#/components/schemas/GroupListMeta'
UnsubscribeGroupResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/UnsubscribeGroup'
UnusedUserBundlesResponse:
title: UnusedUserBundlesResponse
required:
- data
type: object
properties:
data:
title: Data
type: array
items:
$ref: '#/components/schemas/UnusedUserBundlesSchema'
UnusedUserBundlesSchema:
title: UnusedUserBundlesSchema
required:
- billing_bundle
- user_bundle_ids
type: object
properties:
billing_bundle:
$ref: '#/components/schemas/BillingBundleSummary'
user_bundle_ids:
title: User Bundle Ids
type: array
items:
type: string
format: uuid
description: List of user bundle IDs for given bundle.
example:
- 1e650b96-4c6a-4d6f-b8ed-87c3fcacf595
- 53beb701-1231-4548-8abf-c802f38b14aa
UpdateAiTestMetricRequest:
type: object
properties:
name:
type: string
description:
type: string
type:
type: string
description: 'How the metric is evaluated: custom_code or llm_judge.'
eval_type:
type: string
description: 'What the metric scores: numeric, continuous_qualitative, or binary_workflow_adherence.'
prompt:
type: string
description: Judge prompt used by llm_judge metrics.
enum_values:
type: array
items:
type: string
agents:
type: array
items:
type: integer
add_to_new_agents:
type:
- boolean
- 'null'
simulation_enabled:
type: boolean
observability_enabled:
type: boolean
sampling_enabled:
type: boolean
audio_enabled:
type: boolean
display_order:
type: integer
example:
name: Escalates on refund denial
prompt: Score the assistant's escalation behaviour between 0.0 and 1.0, considering tone.
audio_enabled: true
UpdateAssistantRequest:
properties:
name:
type: string
model:
type: string
description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible)
to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field.
If neither `model` nor `external_llm` is provided, Telnyx applies the default model.
instructions:
type: string
description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
tools:
$ref: '#/components/schemas/AssistantTools'
description: 'Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids`
to attach shared tools created with the AI Tools endpoints. On update, a sent `tools` array fully replaces the
assistant''s inline tools; omit the field to leave the inline tools unchanged. Each tool type except `function`,
`webhook`, and `client_side_tool` allows at most one instance per assistant, counted across inline `tools` and
shared `tool_ids` combined — sending a duplicate of such a type returns HTTP 400 with error code 10015. Responses
merge shared tools into `tools` with `shared: true`; when updating, omit those tools from the `tools` array and
manage them through `tool_ids` instead.'
mcp_servers:
type: array
items:
$ref: '#/components/schemas/AssistantMCPServer'
default: []
description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them
by `id` here.
a2a_agents:
type: array
items:
$ref: '#/components/schemas/AssistantA2AAgent'
description: 'A2A agents this assistant can delegate to. Tools are not stored here: at the start of every conversation
each agent''s card is fetched and one tool is derived per skill the card advertises, named `a2a__`.
The following limits are not enforced when the assistant is saved, and anything past them is dropped when the
conversation starts: 64 agents per assistant, 64 skills per card, 128 derived tools per assistant, and a 6 second
budget for all card fetches combined. An agent whose card cannot be fetched costs the assistant that capability
for the conversation; it does not fail the call. Omit this field to leave the assistant''s agents unchanged; send
an empty array to remove them all.'
tool_ids:
title: Ids of shared tools
items:
type: string
type: array
description: IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline
`tools`. On update, a sent `tool_ids` array fully replaces the assistant's attached shared tools; omit the field
to leave them unchanged. Single-instance tool types are counted across inline `tools` and `tool_ids` combined,
so attaching a shared tool of such a type when an instance already exists returns HTTP 400 with error code 10015.
description:
type: string
greeting:
type: string
description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
Use an empty string to have the assistant wait for the user to speak first. Use the special value ``
to have the assistant generate the greeting based on the system instructions.
llm_api_key_ref:
type: string
description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier`
for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref`
instead. Warning: Free plans are unlikely to work with this integration.'
external_llm:
$ref: '#/components/schemas/ExternalLLMReq'
fallback_config:
$ref: '#/components/schemas/FallbackConfigReq'
voice_settings:
$ref: '#/components/schemas/inference-embedding_VoiceSettings'
avatar_settings:
anyOf:
- $ref: '#/components/schemas/AvatarSettingsRequest'
- type: 'null'
description: '**Beta:** Replaces the assistant''s avatar configuration. Omit this field to leave the current configuration
unchanged, or set it to `null` to remove the configuration.'
transcription:
$ref: '#/components/schemas/TranscriptionSettings'
telephony_settings:
$ref: '#/components/schemas/TelephonySettings'
messaging_settings:
$ref: '#/components/schemas/MessagingSettings'
enabled_features:
items:
$ref: '#/components/schemas/EnabledFeatures'
type: array
uniqueItems: true
insight_settings:
$ref: '#/components/schemas/InsightSettings'
privacy_settings:
$ref: '#/components/schemas/PrivacySettings'
dynamic_variables_webhook_url:
type: string
description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of
the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level
`dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will
be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
for the full request/response format and timeout behavior.'
dynamic_variables_webhook_timeout_ms:
type: integer
minimum: 1
maximum: 10000
default: 1500
description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook
does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
dynamic_variables:
type: object
description: Map of dynamic variables and their default values
additionalProperties: true
widget_settings:
$ref: '#/components/schemas/WidgetSettings'
interruption_settings:
$ref: '#/components/schemas/inference-embedding_InterruptionSettings'
integrations:
type: array
items:
$ref: '#/components/schemas/AssistantIntegration'
default: []
description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`;
the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration
by `integration_id`.
observability_settings:
$ref: '#/components/schemas/ObservabilityReq'
tags:
type: array
items:
type: string
default: []
description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.
version_name:
type: string
maxLength: 50
default: New assistant
description: Human-readable name for the assistant version.
post_conversation_settings:
$ref: '#/components/schemas/PostConversationSettingsReq'
delegation_settings:
$ref: '#/components/schemas/DelegationSettings'
websocket_settings:
$ref: '#/components/schemas/WebsocketSettings'
conversation_flow:
$ref: '#/components/schemas/ConversationFlowReq'
type: object
title: UpdateAssistantRequest
UpdateAssistantRequestWithPromotion:
allOf:
- $ref: '#/components/schemas/UpdateAssistantRequest'
- properties:
promote_to_main:
type: boolean
default: true
description: Indicates whether the assistant should be promoted to the main version. Defaults to true.
type: object
UpdateAssistantTestRequest:
properties:
name:
type: string
maxLength: 255
minLength: 1
title: Name
description: Updated name for the assistant test. Must be unique and descriptive.
description:
type: string
maxLength: 1000
title: Description
description: Updated description of the test's purpose and evaluation criteria.
telnyx_conversation_channel:
$ref: '#/components/schemas/TelnyxConversationChannel'
description: Updated communication channel for the test execution.
destination:
type: string
minLength: 1
title: Destination
description: Updated target destination for test conversations.
max_duration_seconds:
type: integer
maximum: 3600.0
minimum: 1.0
title: Max Duration Seconds
description: Updated maximum test duration in seconds.
test_suite:
type: string
maxLength: 100
title: Test Suite
description: Updated test suite assignment for better organization.
instructions:
type: string
maxLength: 5000
minLength: 1
title: Instructions
description: Updated test scenario instructions and objectives.
rubric:
items:
type: object
required:
- name
- criteria
properties:
name:
type: string
description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity.
criteria:
type: string
description: Specific guidance on how to assess the assistant’s performance for this rubric item.
additionalProperties: false
type: array
minItems: 1
title: Rubric
description: Updated evaluation criteria for assessing assistant performance.
type: object
title: UpdateAssistantTestRequest
description: 'Request model for updating an existing assistant test.
All fields are optional, allowing partial updates of test configuration.
Only provided fields will be updated, others remain unchanged.'
UpdateAuthenticationProviderRequest:
type: object
title: Update Authentication Provider Request
properties:
name:
$ref: '#/components/schemas/name'
short_name:
$ref: '#/components/schemas/short_name'
active:
$ref: '#/components/schemas/active'
settings:
$ref: '#/components/schemas/settings'
settings_url:
$ref: '#/components/schemas/settings_url'
example:
name: Okta
short_name: myorg
active: true
settings:
idp_entity_id: https://myorg.myidp.com/saml/metadata
idp_sso_target_url: https://myorg.myidp.com/trust/saml2/http-post/sso
idp_cert_fingerprint: 13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7
idp_cert_fingerprint_algorithm: sha1
UpdateAvatarRequest:
type: object
additionalProperties: false
required:
- name
properties:
name:
type: string
minLength: 1
maxLength: 255
description: New customer-facing name of the custom avatar.
example: Updated portrait
UpdateBillingGroup:
type: object
properties:
name:
type: string
description: A name for the billing group
example:
name: string
UpdateBrand:
title: UpdateBrand
required:
- entityType
- displayName
- country
- email
- vertical
type: object
properties:
entityType:
allOf:
- $ref: '#/components/schemas/EntityType'
description: Entity type behind the brand. This is the form of business establishment.
displayName:
title: Displayname
maxLength: 100
type: string
description: Display or marketing name of the brand.
example: ABC Mobile
companyName:
title: Companyname
maxLength: 100
type: string
description: (Required for Non-profit/private/public) Legal company name.
example: ABC Inc.
firstName:
title: Firstname
maxLength: 100
type: string
description: First name of business contact.
example: John
lastName:
title: Lastname
maxLength: 100
type: string
description: Last name of business contact.
example: Smith
ein:
title: Ein
maxLength: 20
type: string
description: (Required for Non-profit) Government assigned corporate tax ID. EIN is 9-digits in U.S.
example: '111111111'
phone:
title: Phone
maxLength: 20
type: string
description: Valid phone number in e.164 international format.
example: '+12024567890'
street:
title: Street
maxLength: 100
type: string
description: Street number and name.
example: '123'
city:
title: City
maxLength: 100
type: string
description: City name
example: New York
state:
title: State
maxLength: 20
type: string
description: State. Must be 2 letters code for United States.
example: NY
postalCode:
title: Postalcode
maxLength: 10
type: string
description: Postal codes. Use 5 digit zipcode for United States
example: '10001'
country:
title: Country
maxLength: 2
type: string
description: 'ISO2 2 characters country code. Example: US - United States'
example: US
email:
title: Email
maxLength: 100
type: string
description: Valid email address of brand support contact.
stockSymbol:
title: Stocksymbol
maxLength: 10
type: string
description: (Required for public company) stock symbol.
example: ABC
stockExchange:
allOf:
- $ref: '#/components/schemas/StockExchange'
description: (Required for public company) stock exchange.
example: NASDAQ
ipAddress:
title: Ipaddress
maxLength: 50
type: string
description: IP address of the browser requesting to create brand identity.
website:
title: Website
maxLength: 100
type: string
description: Brand website URL.
example: http://www.abcmobile.com
vertical:
allOf:
- $ref: '#/components/schemas/Vertical'
description: Vertical or industry segment of the brand.
altBusinessIdType:
$ref: '#/components/schemas/AltBusinessIdType'
isReseller:
title: Isreseller
type: boolean
identityStatus:
$ref: '#/components/schemas/BrandIdentityStatus'
businessContactEmail:
title: BusinessContactEmail
type: string
description: 'Business contact email.
Required if `entityType` will be changed to `PUBLIC_PROFIT`. Otherwise, it is recommended to either omit this
field or set it to `null`.'
example: name@example.com
webhookURL:
title: WebhookURL
type: string
description: Webhook URL for brand status updates.
example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93
webhookFailoverURL:
title: WebhookFailoverURL
type: string
description: Webhook failover URL for brand status updates.
example: https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6
altBusinessId:
title: Altbusiness Id
maxLength: 50
type: string
description: Alternate business identifier such as DUNS, LEI, or GIIN
UpdateCallControlApplicationRequest:
type: object
title: Update Call Control Application Request
required:
- application_name
- webhook_event_url
properties:
application_name:
type: string
description: A user-assigned name to help manage the application.
example: call-router
webhook_event_url:
type: string
format: url
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this Call Control Application.
default: false
active:
type: boolean
description: Specifies whether the connection can be used.
default: true
anchorsite_override:
type: string
description: 'Latency directs Telnyx to route media through the site with the lowest round-trip time
to the user''s connection. Telnyx calculates this time using ICMP ping messages. This can be disabled by specifying
a site to handle all media.
'
enum:
- Latency
- Chicago, IL
- Ashburn, VA
- San Jose, CA
- London, UK
- Chennai, IN
- Amsterdam, Netherlands
- Toronto, Canada
- Sydney, Australia
example: Amsterdam, Netherlands
default: Latency
dtmf_type:
type: string
description: Sets the type of DTMF digits sent from Telnyx to this Connection. Note that DTMF digits sent to Telnyx
will be accepted in all formats.
enum:
- RFC 2833
- Inband
- SIP INFO
example: Inband
default: RFC 2833
first_command_timeout:
type: boolean
description: Specifies whether calls to phone numbers associated with this connection should hangup after timing
out.
example: true
default: false
first_command_timeout_secs:
type: integer
description: Specifies how many seconds to wait before timing out a dial command.
example: 10
default: 30
tags:
type: array
items:
type: string
description: Tags assigned to the Call Control Application.
example:
- tag1
- tag2
inbound:
$ref: '#/components/schemas/CallControlApplicationInbound'
outbound:
$ref: '#/components/schemas/CallControlApplicationOutbound'
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_event_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
redact_dtmf_debug_logging:
type: boolean
description: When enabled, DTMF digits entered by users will be redacted in debug logs to protect PII data entered
through IVR interactions.
example: true
default: false
example:
application_name: call-router
webhook_event_url: https://example.com
active: false
anchorsite_override: Latency
dtmf_type: Inband
first_command_timeout: true
first_command_timeout_secs: 10
inbound:
channel_limit: 10
shaken_stir_enabled: true
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
webhook_api_version: '1'
webhook_event_failover_url: https://failover.example.com
webhook_timeout_secs: 25
call_cost_in_webhooks: true
redact_dtmf_debug_logging: true
UpdateCallRequest:
type: object
title: Update Call Request
properties:
Status:
description: The value to set the call status to. Setting the status to completed ends the call.
example: completed
type: string
Url:
description: The URL where TeXML will make a request to retrieve a new set of TeXML instructions to continue the
call flow.
example: https://www.example.com/intruction-b.xml
type: string
Method:
description: HTTP request type used for `Url`.
example: GET
type: string
enum:
- GET
- POST
FallbackUrl:
description: A failover URL for which Telnyx will retrieve the TeXML call instructions if the Url is not responding.
example: https://www.example.com/intruction-c.xml
type: string
FallbackMethod:
description: HTTP request type used for `FallbackUrl`.
example: GET
type: string
enum:
- GET
- POST
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the call.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
type: string
enum:
- GET
- POST
Texml:
description: TeXML to replace the current one with.
example: Hello
type: string
example:
Status: completed
UpdateCampaignRequest:
title: UpdateCampaignRequest
type: object
properties:
resellerId:
title: Resellerid
maxLength: 8
type: string
description: Alphanumeric identifier of the reseller that you want to associate with this campaign.
sample1:
title: Sample1
maxLength: 255
type: string
description: Message sample. Some campaign tiers require 1 or more message samples.
sample2:
title: Sample2
maxLength: 255
type: string
description: Message sample. Some campaign tiers require 2 or more message samples.
sample3:
title: Sample3
maxLength: 255
type: string
description: Message sample. Some campaign tiers require 3 or more message samples.
sample4:
title: Sample4
maxLength: 255
type: string
description: Message sample. Some campaign tiers require 4 or more message samples.
sample5:
title: Sample5
maxLength: 255
type: string
description: Message sample. Some campaign tiers require 5 or more message samples.
messageFlow:
title: Messageflow
maxLength: 2048
type: string
description: Message flow description.
helpMessage:
title: Helpmessage
maxLength: 255
type: string
description: Help message of the campaign.
autoRenewal:
title: Autorenewal
type: boolean
description: Help message of the campaign.
default: true
webhookURL:
title: WebhookURL
type: string
description: Webhook to which campaign status updates are sent.
webhookFailoverURL:
title: WebhookURL
type: string
description: Webhook failover to which campaign status updates are sent.
UpdateCloudfsFilesystemRequest:
type: object
properties:
name:
type: string
description: New filesystem name, unique within your organization. Names are trimmed and lowercased; after normalization
they may contain lowercase letters, numbers, `.`, `_`, and `-` only.
pattern: ^[a-z0-9._-]+$
minLength: 1
maxLength: 63
example: agent-fs
UpdateCollectionRequest:
type: object
description: Metadata-only update. Provide either or both fields.
properties:
name:
type: string
example: Support Transcripts (2026)
description:
type: string
example: Updated description.
UpdateConferenceParticipantRequest:
type: object
title: Update Conference Participant Request
properties:
end_conference_on_exit:
description: Whether the conference should end when this participant exits.
type: boolean
example: false
soft_end_conference_on_exit:
description: Whether the conference should soft-end when this participant exits. A soft end will stop new participants
from joining but allow existing participants to remain.
type: boolean
example: false
beep_enabled:
description: Whether entry/exit beeps are enabled for this participant.
type: string
enum:
- always
- never
- on_enter
- on_exit
example: always
example:
end_conference_on_exit: true
beep_enabled: never
UpdateConferenceRequest:
required:
- call_control_id
- supervisor_role
type: object
title: Update Conference Request
properties:
call_control_id:
description: Unique identifier and token for controlling the call
example: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQczRrZvZakpWxBlpw48KyZQ==
type: string
command_id:
description: Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with
the same `command_id` as one that has already been executed.
example: 891510ac-f3e4-11e8-af5b-de00688a4901
type: string
supervisor_role:
description: Sets the participant as a supervisor for the conference. A conference can have multiple supervisors.
"barge" means the supervisor enters the conference as a normal participant. This is the same as "none". "monitor"
means the supervisor is muted but can hear all participants. "whisper" means that only the specified "whisper_call_control_ids"
can hear the supervisor. Defaults to "none".
example: whisper
type: string
enum:
- barge
- monitor
- none
- whisper
whisper_call_control_ids:
description: Array of unique call_control_ids the supervisor can whisper to. If none provided, the supervisor will
join the conference as a monitoring participant only.
example:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
type: array
items:
type: string
region:
$ref: '#/components/schemas/ConferenceRegion'
example:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
command_id: 891510ac-f3e4-11e8-af5b-de00688a4901
supervisor_role: whisper
whisper_call_control_ids:
- v2:Sg1xxxQ_U3ixxxyXT_VDNI3xxxazZdg6Vxxxs4-GNYxxxVaJPOhFMRQ
- v2:qqpb0mmvd-ovhhBr0BUQQn0fld5jIboaaX3-De0DkqXHzbf8d75xkw
UpdateConversationRequest:
properties:
metadata:
type: object
description: Metadata associated with the conversation. Set `ai_disabled` to `true` to stop AI from responding to
messages (e.g., when a human agent takes over). Set to `false` to re-enable AI responses.
additionalProperties:
type: string
type: object
title: UpdateConversationRequest
UpdateCredentialConnectionRequest:
type: object
title: Update Credential Connection Request
properties:
active:
type: boolean
description: Defaults to true
conversation_persistence:
type: boolean
description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the
connection are transcribed, stored, and indexed. Defaults to false.
user_name:
type: string
description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric
values only (no spaces or special characters).
example: myusername123
password:
type: string
description: The password to be used as part of the credentials. Must be 8 to 128 characters long.
example: my123secure456password789
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
sip_uri_calling_preference:
type: string
description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted)
then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also
choose to allow only calls that are originated on any Connections under your account (internal).
enum:
- disabled
- unrestricted
- internal
default_on_hold_comfort_noise_enabled:
type: boolean
default: false
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/CredentialInbound'
outbound:
$ref: '#/components/schemas/CredentialOutbound'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
active: true
password: my123secure456password789
user_name: myusername123
anchorsite_override: Latency
connection_name: my name
sip_uri_calling_preference: disabled
default_on_hold_comfort_noise_enabled: false
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: disabled
outbound:
call_parking_enabled: true
ani_override: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: US
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
UpdateDynamicVariablesTool:
description: The update_dynamic_variables tool lets the assistant write values into the conversation's dynamic-variables
context during the call. Updated variables are available to later `{{variable}}` interpolation (prompts, speak nodes,
message templates) and to flow edge conditions. Declare each variable the assistant is allowed to set under `updatable_variables`.
properties:
type:
type: string
enum:
- update_dynamic_variables
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
update_dynamic_variables:
$ref: '#/components/schemas/UpdateDynamicVariablesToolParams'
type: object
required:
- type
- update_dynamic_variables
title: UpdateDynamicVariablesTool
UpdateDynamicVariablesToolParams:
description: Configuration for an update_dynamic_variables tool.
properties:
name:
type: string
pattern: ^[a-zA-Z0-9_-]+$
description: The function name surfaced to the LLM. Must match the OpenAI function-name pattern `^[a-zA-Z0-9_-]+$`
and be unique across the assistant's function, webhook, and client_side tools.
example: collect_details
description:
type: string
description: Description of the tool passed to the assistant, guiding when to call it and which variables to update.
example: Collect caller details into conversation variables.
updatable_variables:
type: array
description: The dynamic variables the assistant is allowed to write. At least one is required.
minItems: 1
items:
type: object
properties:
name:
type: string
minLength: 1
pattern: ^(?!telnyx_)[a-zA-Z0-9._-]+$
description: The dynamic-variable key to update. Must match `^[a-zA-Z0-9._-]+$` and may not start with the
reserved `telnyx_` prefix (reserved for system variables). The `pattern` encodes both rules via a negative
lookahead.
example: customer_name
type:
type: string
description: Optional hint for the variable's value type (e.g. `string`).
example: string
description:
type: string
description: Optional description of the variable, guiding the assistant on what value to capture.
example: The caller's full name.
required:
- name
additionalProperties: false
required:
- name
- description
- updatable_variables
type: object
title: UpdateDynamicVariablesToolParams
UpdateEmailDomainRequest:
type: object
properties:
inbound_enabled:
type: boolean
description: Enable or disable inbound routing for this domain
dmarc_policy:
type: object
allOf:
- $ref: '#/components/schemas/EmailDMARCPolicy'
nullable: true
description: 'Update the DMARC policy. The recommended _dmarc TXT record is rebuilt and its verification reset to
pending.
'
tracking:
$ref: '#/components/schemas/DomainsTrackingSettings'
UpdateEmailTemplateRequest:
type: object
properties:
name:
type: string
pattern: ^[A-Za-z0-9 _-]+$
maxLength: 255
subject:
type: string
nullable: true
description: Liquid template subject.
maxLength: 255
html_body:
type: string
nullable: true
description: Liquid template HTML body.
text_body:
type: string
nullable: true
description: Liquid template text body.
variables:
type: array
items:
type: string
maxLength: 255
nullable: true
description: Persisted variable names. In `automatic` mode a non-null array is rejected; in `explicit` mode this
is the exact manual array and each item is limited to 255 Unicode code points.
variables_mode:
type: string
enum:
- automatic
- explicit
description: Controls how `variables` is maintained. Setting `automatic` re-extracts immediately from the effective
subject, HTML body, and text body and rejects a simultaneous non-null array. Setting `explicit` requires the exact
non-null array, including valid `[]`. With the mode omitted, a non-null array selects explicit mode, null selects
automatic mode, and omitting both fields preserves the current mode. Source-content changes re-extract only in
automatic mode.
strict_variables:
type: boolean
description: Per-template strict variable-validation setting.
autoescape:
type: boolean
description: Per-template HTML autoescaping setting.
variable_schema:
type: object
nullable: true
description: Structured variable requirements. Required variables cannot define defaults; invalid combinations return
422. Set to `null` to clear the schema.
additionalProperties:
$ref: '#/components/schemas/VariableSchemaEntry'
UpdateEmailWebhookRequest:
type: object
properties:
url:
type: string
format: uri
events:
type: array
minItems: 1
items:
$ref: '#/components/schemas/EmailWebhookEvent'
UpdateEvaluatorScenarioRequest:
type: object
properties:
name:
type: string
agent:
type:
- integer
- 'null'
personality:
type: integer
instructions:
type: string
expected_outcome_prompt:
type: string
metrics:
type: array
items:
type: integer
tags:
type: array
items:
type: string
tool_ids:
type: array
items:
type: string
test_profile:
type: integer
phone_number:
type: integer
inbound_phone_number:
type: integer
folder_path:
type:
- string
- 'null'
first_message:
type: string
scenario_language:
type: string
max_duration:
type:
- integer
- 'null'
example:
name: Refund escalation flow - updated
instructions: Call the support line, demand a refund, and mention the damaged packaging.
metrics:
- 266881
- 266882
UpdateExternalConnectionPhoneNumberRequest:
type: object
title: Update External Connection Phone Number Request
properties:
location_id:
type: string
format: uuid
description: Identifies the location to assign the phone number to.
UpdateExternalConnectionRequest:
type: object
title: Update External Connection Request
required:
- outbound
properties:
active:
$ref: '#/components/schemas/ConnectionActive'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/external-voice-integrations_OutboundVoiceProfileId'
required:
- outbound_voice_profile_id
example:
active: false
outbound:
outbound_voice_profile_id: '1911630617284445511'
UpdateFaxApplicationRequest:
type: object
title: Update Fax Application Request
required:
- application_name
- webhook_event_url
properties:
application_name:
$ref: '#/components/schemas/ApplicationName'
active:
$ref: '#/components/schemas/ConnectionActive'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
webhook_event_url:
$ref: '#/components/schemas/WebhookEventUrl'
webhook_event_failover_url:
$ref: '#/components/schemas/WebhookEventFailoverUrl'
webhook_timeout_secs:
$ref: '#/components/schemas/WebhookTimeoutSecs'
fax_email_recipient:
$ref: '#/components/schemas/FaxEmailRecipient'
tags:
type: array
items:
type: string
description: Tags associated with the Fax Application.
example:
- tag1
- tag2
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent inbound calls to phone numbers associated with
this connection.
default: null
example: 10
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way
a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called
from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
default: null
example: example
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
example: only_my_connections
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the number of concurrent outbound calls to phone numbers associated with
this connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/OutboundVoiceProfileId'
example:
application_name: fax-router
active: false
anchorsite_override: Amsterdam, Netherlands
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_timeout_secs: 25
tags:
- tag1
- tag2
inbound:
channel_limit: 10
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
UpdateFqdnAuthenticationRequest:
type: object
title: Update FQDN Authentication Request
properties:
user_name:
type: string
description: The username for authentication.
password:
type: string
description: The password for authentication.
ip_authentication_method:
type: string
description: The IP authentication method.
enum:
- token
- p-charge-info
fqdn_outbound_authentication:
type: string
description: The outbound authentication type.
enum:
- ip-authentication
- credential-authentication
webhook_url:
type: string
format: uri
description: The webhook URL for authentication events.
failover_url:
type: string
format: uri
description: The failover webhook URL.
txt_name:
type: string
description: The TXT record name for Microsoft Teams SBC DNS verification.
txt_value:
type: string
description: The TXT record value for Microsoft Teams SBC DNS verification.
txt_ttl:
type: integer
description: The TTL for the TXT record.
example:
user_name: newusername
password: new_password
ip_authentication_method: p-charge-info
fqdn_outbound_authentication: ip-authentication
webhook_url: https://example.com
failover_url: https://failover.example.com
txt_name: new_txt_name
txt_value: new_txt_value
txt_ttl: 300
UpdateFqdnConnectionRequest:
title: Update FQDN Connection Request
properties:
active:
type: boolean
description: Defaults to true
conversation_persistence:
type: boolean
description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the
connection are transcribed, stored, and indexed. Defaults to false.
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
transport_protocol:
$ref: '#/components/schemas/FqdnConnectionTransportProtocol'
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer that the sender and receiver negotiate T38 directly when both are on
the Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call according
to each leg's settings.
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
$ref: '#/components/schemas/WebhookEventUrl'
webhook_event_failover_url:
$ref: '#/components/schemas/WebhookEventFailoverUrl'
webhook_api_version:
$ref: '#/components/schemas/WebhookApiVersion'
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
webhook_timeout_secs:
$ref: '#/components/schemas/WebhookTimeoutSecs'
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/InboundFqdn'
outbound:
$ref: '#/components/schemas/OutboundFqdn'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
active: true
anchorsite_override: Latency
connection_name: string
transport_protocol: TLS
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: true
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: string
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 10
shaken_stir_enabled: true
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
type: object
UpdateFqdnRequest:
title: Update FQDN Request
type: object
properties:
connection_id:
type: string
description: ID of the FQDN connection to which this IP should be attached.
fqdn:
type: string
description: FQDN represented by this resource.
example: example.com
port:
type:
- integer
- 'null'
description: Port to use when connecting to this FQDN.
default: 5060
example: 5060
dns_record_type:
type: string
description: The DNS record type for the FQDN. For cases where a port is not set, the DNS record type must be 'srv'.
For cases where a port is set, the DNS record type must be 'a'. If the DNS record type is 'a' and a port is not
specified, 5060 will be used.
example: a
example:
connection_id: '1516447646313612565'
fqdn: example.com
port: 8080
dns_record_type: a
UpdateGenericPayConnectorRequest:
type: object
description: Only type, mode and config are updated; the connector name is selected by the path. Omit config to preserve
existing configuration and credentials. If supplied, send the entire replacement config including required credentials.
properties:
type:
type: string
enum:
- generic
description: Generic connector type. Omit to preserve the existing value.
mode:
type: string
enum:
- test
- live
description: Omit to preserve the existing mode. Use an explicit test or live value.
config:
$ref: '#/components/schemas/GenericPayConnectorConfig'
UpdateInboundMessageRequest:
type: object
properties:
read_at:
description: Set to `true` for server time, an ISO 8601 timestamp for an explicit read time, or `null` to mark unread.
oneOf:
- type: boolean
enum:
- true
- type: string
format: date-time
- type: string
nullable: true
enum:
- null
required:
- read_at
UpdateIpConnectionRequest:
title: Update Ip Connection Request
properties:
active:
type: boolean
description: Defaults to true
conversation_persistence:
type: boolean
description: Whether conversation persistence is enabled for this connection. When enabled, calls handled by the
connection are transcribed, stored, and indexed. Defaults to false.
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
type: string
transport_protocol:
type: string
description: One of UDP, TLS, or TCP. Applies only to connections with IP authentication or FQDN authentication.
default: UDP
enum:
- UDP
- TCP
- TLS
default_on_hold_comfort_noise_enabled:
type: boolean
default: true
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/InboundIp'
outbound:
$ref: '#/components/schemas/OutboundIp'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
example:
active: true
anchorsite_override: Latency
connection_name: string
transport_protocol: TLS
default_on_hold_comfort_noise_enabled: true
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: false
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
default_routing_method: sequential
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
sip_region: US
sip_subdomain: test
sip_subdomain_receive_settings: only_my_connections
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
outbound:
call_parking_enabled: true
ani_override: string
ani_override_type: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: string
t38_reinvite_source: customer
tech_prefix: string
ip_authentication_method: token
ip_authentication_token: string
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
bridge_generate_comfort_noise_on_cn: false
type: object
UpdateIpRequest:
title: Update Ip Request
type: object
required:
- ip_address
properties:
connection_id:
type: string
description: ID of the IP Connection to which this IP should be attached.
ip_address:
type: string
description: IP adddress represented by this resource.
example: 192.168.0.0
port:
type: integer
description: Port to use when connecting to this IP.
default: 5060
example: 5060
example:
connection_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
ip_address: 192.168.0.0
port: 5060
UpdateMCPServerRequest:
type: object
properties:
id:
type: string
title: Id
name:
type: string
title: Name
type:
type: string
title: Type
url:
type: string
title: Url
api_key_ref:
type:
- string
- 'null'
title: Api Key Ref
allowed_tools:
type:
- array
- 'null'
items:
type: string
title: Allowed Tools
created_at:
type: string
format: date-time
title: Created At
title: UpdateMCPServerRequest
UpdateManagedAccountGlobalChannelLimitRequest:
title: Update Managed Account Global Outbound Channels Request
properties:
channel_limit:
type: integer
description: Integer value that indicates the number of allocatable global outbound channels that should be allocated
to the managed account. Must be 0 or more. If the value is 0 then the account will have no usable channels and
will not be able to perform outbound calling.
example: 30
example:
channel_limit: 30
type: object
UpdateManagedAccountRequest:
title: Update Managed Account Request
properties:
managed_account_allow_custom_pricing:
type: boolean
description: Boolean value that indicates if the managed account is able to have custom pricing set for it or not.
If false, uses the pricing of the manager account. Defaults to false. This value may be changed, but there may
be time lag between when the value is changed and pricing changes take effect.
example: false
example:
managed_account_allow_custom_pricing: true
type: object
UpdateMediaMultipartRequest:
type: object
title: Upload media multipart request
properties:
media:
description: The file you want to upload. The maximum allowed size is 20 MB.
type: string
format: binary
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum
allowed vale is 630720000, which translates to 20 years.
type: integer
example: 86400
example:
media: string($binary)
ttl_secs: 86400
UpdateMediaRequest:
type: object
title: Upload media request
properties:
media_url:
description: The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size
is 20 MB.
type: string
example: http://www.example.com/audio.mp3
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum
allowed vale is 630720000, which translates to 20 years.
type: integer
example: 86400
example:
media_url: http://www.example.com/audio.mp3
ttl_secs: 86400
UpdateMeetingSessionRequest:
title: UpdateMeetingSessionRequest
type: object
additionalProperties: false
description: Request body for updating a meeting session. All fields are optional; an empty object is a valid no-op
update.
properties:
join_at:
type: string
format: date-time
description: ISO-8601 timestamp for the bot to join. May be updated to reschedule.
bot_name:
type: string
minLength: 1
maxLength: 100
description: Updated display name for the bot.
UpdateMessageTemplateRequest:
title: UpdateMessageTemplateRequest
description: The request body when updating a message template.
required:
- text
type: object
properties:
text:
example: 'Your {{app_name}} verification code is: {{code}}.'
type: string
description: The text content of the message template.
UpdateMessagingProfileRequest:
type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
enum:
- messaging_profile
readOnly: true
id:
description: Identifies the type of resource.
type: string
format: uuid
readOnly: true
name:
description: A user friendly name for the messaging profile.
type: string
enabled:
description: Specifies whether the messaging profile is enabled or not.
type: boolean
webhook_url:
description: The URL where webhooks related to this messaging profile will be sent.
type:
- string
- 'null'
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary
URL fails.
type:
- string
- 'null'
format: url
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.
type: string
enum:
- '1'
- '2'
- '2010-04-01'
whitelisted_destinations:
description: 'Destinations to which the messaging profile is allowed to send. The elements in the list must be valid
ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed.
This field is required if the messaging profile doesn''t have it defined yet.'
type: array
items:
description: ISO 3166-1 alpha-2 country code.
type: string
pattern: ^[A-Z]{2}$
created_at:
description: ISO 8601 formatted date indicating when the resource was created.
type: string
format: date-time
readOnly: true
updated_at:
description: ISO 8601 formatted date indicating when the resource was updated.
type: string
format: date-time
readOnly: true
v1_secret:
description: Secret used to authenticate with v1 endpoints.
type: string
number_pool_settings:
$ref: '#/components/schemas/NumberPoolSettings'
url_shortener_settings:
$ref: '#/components/schemas/UrlShortenerSettings'
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
daily_spend_limit:
description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.
type: string
pattern: ^[0-9]+(?:\.[0-9]+)?$
daily_spend_limit_enabled:
description: Whether to enforce the value configured by `daily_spend_limit`.
type: boolean
mms_fall_back_to_sms:
description: enables SMS fallback for MMS messages.
type: boolean
default: false
mms_transcoding:
description: enables automated resizing of MMS media.
type: boolean
default: false
mobile_only:
description: Send messages only to mobile phone numbers.
type: boolean
default: false
smart_encoding:
description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically
selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and
minimize costs.
type: boolean
default: false
ai_assistant_id:
description: The ID of the AI assistant associated with this messaging profile.
type:
- string
- 'null'
example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000
example:
name: Updated Profile for Messages
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
enabled: true
webhook_api_version: '2'
whitelisted_destinations:
- US
number_pool_settings:
toll_free_weight: 10
long_code_weight: 2
skip_unhealthy: false
sticky_sender: true
geomatch: false
url_shortener_settings:
domain: example.ex
prefix: cmpny
replace_blacklist_only: true
send_webhooks: false
v1_secret: rP1VamejkU2v0qIUxntqLW2c
UpdateMissionRequest:
properties:
name:
title: Name
type: string
description:
title: Description
type: string
model:
title: Model
type: string
instructions:
title: Instructions
type: string
execution_mode:
$ref: '#/components/schemas/ExecutionMode'
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
title: UpdateMissionRequest
UpdateMissionRunRequest:
properties:
status:
$ref: '#/components/schemas/RunStatus'
result_summary:
title: Result Summary
type: string
result_payload:
title: Result Payload
additionalProperties: true
type: object
error:
title: Error
type: string
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
title: UpdateMissionRunRequest
UpdateNumberOrderPhoneNumberRequest:
properties:
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/UpdateRegulatoryRequirement'
type: object
UpdateNumberOrderRequest:
properties:
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/UpdateRegulatoryRequirement'
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
type: object
UpdateOutboundVoiceProfileRequest:
type: object
title: Outbound Voice Profile
required:
- name
example:
name: office
traffic_type: conversational
service_plan: global
concurrent_call_limit: 10
enabled: true
tags:
- office-profile
usage_payment_method: rate-deck
whitelisted_destinations:
- US
- BR
- AU
max_destination_rate: 10
daily_spend_limit: '100.00'
daily_spend_limit_enabled: true
billing_group_id: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
calling_window:
start_time: 08:00:00.00Z
end_time: 20:00:00.00Z
calls_per_cld: 5
properties:
name:
type: string
description: A user-supplied name to help with organization.
example: office
minLength: 3
traffic_type:
$ref: '#/components/schemas/TrafficType'
service_plan:
$ref: '#/components/schemas/ServicePlan'
concurrent_call_limit:
type:
- integer
- 'null'
description: Must be no more than your global concurrent call limit. Null means no limit.
example: 10
enabled:
type: boolean
description: Specifies whether the outbound voice profile can be used. Disabled profiles will result in outbound
calls being blocked for the associated Connections.
example: true
default: true
tags:
type: array
items:
type: string
example:
- office-profile
usage_payment_method:
$ref: '#/components/schemas/UsagePaymentMethod'
whitelisted_destinations:
type: array
items:
type: string
description: The list of destinations you want to be able to call using this outbound voice profile formatted in
alpha2.
example:
- US
- BR
- AU
default:
- US
- CA
max_destination_rate:
type: number
description: Maximum rate (price per minute) for a Destination to be allowed when making outbound calls.
daily_spend_limit:
type: string
description: The maximum amount of usage charges, in USD, you want Telnyx to allow on this outbound voice profile
in a day before disallowing new calls.
example: '100.00'
daily_spend_limit_enabled:
type: boolean
description: Specifies whether to enforce the daily_spend_limit on this outbound voice profile.
example: true
default: false
call_recording:
$ref: '#/components/schemas/OutboundCallRecording'
billing_group_id:
type:
- string
- 'null'
format: uuid
description: The ID of the billing group associated with the outbound proflile. Defaults to null (for no group assigned).
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
default: null
calling_window:
type: object
description: Specifies the time window and call limits for calls made using this outbound voice profile.
example:
start_time: 08:00:00.00Z
end_time: 20:00:00.00Z
calls_per_cld: 5
properties:
start_time:
type: string
description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are allowed to start.
example: 08:00:00.00Z
format: time
end_time:
type: string
description: The UTC time of day (in HH:MM format, 24-hour clock) when calls are no longer allowed to start.
example: 20:00:00.00Z
format: time
calls_per_cld:
type: integer
description: The maximum number of calls that can be initiated to a single called party (CLD) within the calling
window. A null value means no limit.
example: 5
minimum: 0
UpdatePartnerCampaignRequest:
title: UpdateCampaignRequest
type: object
properties:
webhookURL:
title: WebhookURL
type: string
description: Webhook to which campaign status updates are sent.
example: https://webhook.com/67ea78a8-9f32-4d04-b62d-f9502e8e5f93
webhookFailoverURL:
title: WebhookURL
type: string
description: Webhook failover to which campaign status updates are sent.
example: https://webhook.com/9010a453-4df8-4be6-a551-1070892888d6
UpdatePhoneNumberMessagingSettingsRequest:
type: object
properties:
messaging_profile_id:
type: string
description: 'Configure the messaging profile this phone number is assigned to:
* Omit this field or set its value to `null` to keep the current value.
* Set this field to `""` to unassign the number from its messaging profile
* Set this field to a quoted UUID of a messaging profile to assign this number to that messaging profile'
messaging_product:
type: string
description: 'Configure the messaging product for this number:
* Omit this field or set its value to `null` to keep the current value.
* Set this field to a quoted product ID to set this phone number to that product'
example: P2P
tags:
type: array
items:
type: string
description: Tags to set on this phone number.
example:
messaging_profile_id: dd50eba1-a0c0-4563-9925-b25e842a7cb6
messaging_product: P2P
UpdatePhoneNumberRequest:
type: object
properties:
id:
type: string
description: Identifies the type of resource.
readOnly: true
tags:
type: array
description: A list of user-assigned tags to help organize phone numbers.
items:
type: string
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that
not all carriers cooperate with this security mechanism.
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
example: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
address_id:
type: string
description: Identifies the address associated with the phone number.
connection_id:
type: string
description: Identifies the connection associated with the phone number.
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
example:
id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
tags:
- tag
address_id: dc8f39ac-953d-4520-b93b-786ae87db0da
external_pin: '1234'
customer_reference: customer-reference
connection_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
billing_group_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
hd_voice_enabled: true
UpdatePhoneNumberVoiceSettingsRequest:
type: object
properties:
tech_prefix_enabled:
type: boolean
default: false
description: Controls whether a tech prefix is enabled for this phone number.
translated_number:
type: string
description: This field allows you to rewrite the destination number of an inbound call before the call is routed
to you. The value of this field may be any alphanumeric value, and the value will replace the number originally
dialed.
caller_id_name_enabled:
type: boolean
default: false
description: Controls whether the caller ID name is enabled for this phone number.
call_forwarding:
$ref: '#/components/schemas/CallForwarding'
cnam_listing:
$ref: '#/components/schemas/CnamListing'
usage_payment_method:
type: string
enum:
- pay-per-minute
- channel
default: pay-per-minute
description: Controls whether a number is billed per minute or uses your concurrent channels.
media_features:
$ref: '#/components/schemas/MediaFeatures'
call_recording:
$ref: '#/components/schemas/CallRecording'
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users
to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls.
This feature has an additional per-number monthly cost associated with it.
example:
tech_prefix_enabled: true
translated_number: '+13035559999'
caller_id_name_enabled: true
call_forwarding:
call_forwarding_enabled: true
forwards_to: '+13035559123'
forwarding_type: always
cnam_listing:
cnam_listing_enabled: true
cnam_listing_details: example
usage_payment_method: pay-per-minute
media_features:
rtp_auto_adjust_enabled: true
accept_any_rtp_packets_enabled: true
t38_fax_gateway_enabled: true
call_recording:
inbound_call_recording_enabled: true
inbound_call_recording_format: wav
inbound_call_recording_channels: single
inbound_call_screening: disabled
UpdatePlanStepRequest:
properties:
status:
$ref: '#/components/schemas/StepStatus'
metadata:
title: Metadata
additionalProperties: true
type: object
type: object
title: UpdatePlanStepRequest
UpdatePortingOrder:
type: object
title: UpdatePortingOrder
properties:
misc:
anyOf:
- $ref: '#/components/schemas/PortingOrderMisc'
- type: 'null'
end_user:
$ref: '#/components/schemas/PortingOrderEndUser'
documents:
$ref: '#/components/schemas/PortingOrderDocuments'
activation_settings:
type: object
properties:
foc_datetime_requested:
type: string
format: date-time
description: ISO 8601 formatted Date/Time requested for the FOC date
example: '2021-03-19T10:07:15.527Z'
phone_number_configuration:
$ref: '#/components/schemas/PortingOrderPhoneNumberConfiguration'
requirement_group_id:
type: string
format: uuid
description: If present, we will read the current values from the specified Requirement Group into the Documents
and Requirements for this Porting Order. Note that any future changes in the Requirement Group would have no impact
on this Porting Order. We will return an error if a specified Requirement Group conflicts with documents or requirements
in the same request.
example: DE748D99-06FA-4D90-9F9A-F4B62696BADA
requirements:
type: array
description: 'List of requirements for porting numbers. '
items:
$ref: '#/components/schemas/UpdatePortingOrderRequirement'
user_feedback:
$ref: '#/components/schemas/PortingOrderUserFeedback'
webhook_url:
type: string
format: uri
customer_reference:
type: string
customer_group_reference:
type: string
messaging:
type: object
properties:
enable_messaging:
type: boolean
description: Indicates whether Telnyx will port messaging capabilities from the losing carrier. If false, any
messaging capabilities will stay with their current provider.
example: true
UpdatePortingOrderRequirement:
type: object
description: Specifies a value for a requirement on the Porting Order.
required:
- field_value
- requirement_type_id
properties:
field_value:
type: string
description: identifies the document or provides the text value that satisfies this requirement
example: 9787fb5f-cbe5-4de4-b765-3303774ee9fe
requirement_type_id:
type: string
description: Identifies the requirement type that the `field_value` fulfills
example: 59b0762a-b274-4f76-ac32-4d5cf0272e66
UpdatePronunciationDictRequest:
type: object
description: Request body for updating a pronunciation dictionary. At least one field must be provided.
minProperties: 1
properties:
name:
type: string
description: Updated dictionary name.
minLength: 1
maxLength: 255
example: Updated Brand Names
items:
type: array
description: Updated list of pronunciation items (alias or phoneme type).
minItems: 1
maxItems: 100
items:
$ref: '#/components/schemas/PronunciationDictItem'
UpdateQueueRequest:
type: object
title: Update Queue Request
required:
- max_size
properties:
max_size:
description: The maximum number of calls allowed in the queue.
type: integer
minimum: 1
example: 200
example:
max_size: 200
UpdateQueuedCallRequest:
type: object
title: Update Queued Call Request
properties:
keep_after_hangup:
description: Whether the call should remain in queue after hangup.
example: true
type: boolean
example:
keep_after_hangup: true
UpdateRegulatoryRequirement:
properties:
requirement_id:
type: string
format: uuid
description: Unique id for a requirement.
example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_value:
type: string
description: The value of the requirement. For address and document requirements, this should be the ID of the resource.
For textual, this should be the value of the requirement.
example: 45f45a04-b4be-4592-95b1-9306b9db2b21
type: object
UpdateScheduledTestJobRequest:
type: object
properties:
name:
type: string
scenarios:
type: array
items:
type: integer
tags:
type: array
items:
type: string
agent:
type:
- integer
- 'null'
timezone:
type: string
personalities:
type: array
items:
type: integer
execution_mode:
type: string
description: Execution mode for the test runs, such as voice, text, or sip.
frequency:
type: integer
run_as_text:
type: boolean
notify_on:
type: string
enum:
- never
- success
- failure
- both
is_active:
type: boolean
crontab_expression:
type: string
description: Cron expression controlling when the job runs.
example:
name: Nightly regression - updated
notify_on: both
is_active: true
crontab_expression: 0 4 * * *
UpdateSharedToolRequest:
properties:
type:
title: Type
type: string
display_name:
title: Display Name
type: string
function:
title: Function
additionalProperties: true
type: object
retrieval:
title: Retrieval
additionalProperties: true
type: object
handoff:
title: Handoff
additionalProperties: true
type: object
invite:
title: Invite
additionalProperties: true
type: object
webhook:
title: Webhook
additionalProperties: true
type: object
pay:
$ref: '#/components/schemas/PayToolParams'
title: Pay
client_side_tool:
title: Client Side Tool
additionalProperties: true
type: object
update_dynamic_variables:
$ref: '#/components/schemas/UpdateDynamicVariablesToolParams'
title: Update Dynamic Variables
vision:
$ref: '#/components/schemas/VisionToolParams'
title: Vision
timeout_ms:
title: Timeout Ms
type: integer
additionalProperties: true
type: object
title: UpdateSharedToolRequest
description: Request model for updating a shared tool.
UpdateShortCodeRequest:
type: object
required:
- messaging_profile_id
properties:
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
tags:
type:
- array
description: Tags associated with the resource.
items:
type: string
example:
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
tags:
- test_customer
UpdateSpendLimitRequest:
description: 'Send exactly one of `amount` and `unlimited: true`.'
oneOf:
- $ref: '#/components/schemas/UpdateSpendLimitWithAmount'
- $ref: '#/components/schemas/UpdateSpendLimitUnlimited'
UpdateSpendLimitUnlimited:
title: Unlimited
description: Explicitly no cap.
type: object
additionalProperties: false
properties:
unlimited:
type: boolean
enum:
- true
description: '`true`: explicitly no cap.'
example: true
reason:
type: string
maxLength: 500
description: Why the limit is set or changed, kept for audit.
example: Raised for the product launch
required:
- unlimited
UpdateSpendLimitWithAmount:
title: Amount
description: A new limit in USD.
type: object
additionalProperties: false
properties:
amount:
type: number
minimum: 0
description: Limit in USD. `0` blocks at the first cent of spend.
example: 100
unlimited:
type: boolean
enum:
- false
description: Optional; only `false` is allowed together with `amount`.
example: false
reason:
type: string
maxLength: 500
description: Why the limit is set or changed, kept for audit.
example: Raised for the product launch
required:
- amount
UpdateSubNumberOrderRequest:
properties:
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/UpdateRegulatoryRequirement'
type: object
UpdateTestAgentRequest:
type: object
properties:
agent_name:
type: string
description: Name of the test agent.
assistant_id:
type: string
description: ID of the Telnyx AI assistant under test.
description:
type: string
contact_number:
type: string
language:
type: string
description: ISO language code the test agent converses in.
llm_model:
type: string
llm_system_prompt:
type: string
llm_temperature:
type: number
llm_max_tokens:
type: integer
sip_endpoint:
type: string
inbound:
type: boolean
outbound_auto_call:
type: boolean
auto_update_dropoff_nodes:
type: boolean
auto_update_topic_nodes:
type: boolean
auto_fetch_calls_enabled:
type: boolean
auto_sync_prompt_enabled:
type: boolean
example:
agent_name: Support Bot Under Test - renamed
llm_temperature: 0.5
llm_max_tokens: 256
UpdateTexmlApplicationRequest:
type: object
title: Update Texml Application Request
required:
- friendly_name
- voice_url
properties:
friendly_name:
$ref: '#/components/schemas/ApplicationName'
active:
$ref: '#/components/schemas/ConnectionActive'
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
dtmf_type:
$ref: '#/components/schemas/DtmfType'
first_command_timeout:
$ref: '#/components/schemas/FirstCommandTimeout'
first_command_timeout_secs:
$ref: '#/components/schemas/FirstCommandTimeoutSecs'
voice_url:
type: string
description: URL to which Telnyx will deliver your XML Translator webhooks.
format: uri
example: https://example.com
voice_fallback_url:
type: string
description: URL to which Telnyx will deliver your XML Translator webhooks if we get an error response from your
voice_url.
default: null
format: uri
example: https://fallback.example.com
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this TeXML Application.
default: false
voice_method:
type: string
description: HTTP request method Telnyx will use to interact with your XML Translator webhooks. Either 'get' or
'post'.
enum:
- get
- post
default: post
example: get
status_callback:
type: string
description: URL for Telnyx to send requests to containing information about call progress events.
default: null
format: uri
example: https://example.com
status_callback_method:
type: string
description: HTTP request method Telnyx should use when requesting the status_callback URL.
enum:
- get
- post
default: post
example: get
tags:
type: array
items:
type: string
description: Tags associated with the Texml Application.
example:
- tag1
- tag2
inbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of inbound calls to phone numbers associated with this
connection.
default: null
example: 10
shaken_stir_enabled:
type: boolean
description: When enabled Telnyx will include Shaken/Stir data in the Webhook for new inbound calls.
default: false
example: false
sip_subdomain:
type: string
description: 'Specifies a subdomain that can be used to receive Inbound calls to a Connection, in the same way
a phone number is used, from a SIP endpoint. Example: the subdomain "example.sip.telnyx.com" can be called
from any SIP endpoint by using the SIP URI "sip:@example.sip.telnyx.com" where the user part can be any alphanumeric
value. TLS signaling is supported. SRTP media encryption requires TLS transport.'
default: null
example: example
sip_subdomain_receive_settings:
type: string
description: 'This option can be enabled to receive calls from: "Anyone" (any SIP endpoint in the public Internet)
or "Only my connections" (any connection assigned to the same Telnyx user).'
enum:
- only_my_connections
- from_anyone
default: from_anyone
example: only_my_connections
outbound:
type: object
properties:
channel_limit:
type: integer
description: When set, this will limit the total number of outbound calls to phone numbers associated with this
connection.
default: null
example: 10
outbound_voice_profile_id:
$ref: '#/components/schemas/OutboundVoiceProfileId'
example:
friendly_name: call-router
active: false
anchorsite_override: Amsterdam, Netherlands
dtmf_type: Inband
first_command_timeout: true
first_command_timeout_secs: 10
voice_url: https://example.com
voice_fallback_url: https://fallback.example.com
call_cost_in_webhooks: false
voice_method: get
status_callback: https://example.com
status_callback_method: get
tags:
- tag1
- tag2
inbound:
channel_limit: 10
shaken_stir_enabled: true
sip_subdomain: example
sip_subdomain_receive_settings: only_my_connections
outbound:
channel_limit: 10
outbound_voice_profile_id: '1293384261075731499'
UpdateUacConnectionRequest:
type: object
title: Update UAC Connection Request
properties:
active:
type: boolean
description: Defaults to true
user_name:
type: string
description: The user name to be used as part of the credentials. Must be 4-32 characters long and alphanumeric
values only (no spaces or special characters).
example: myusername123
password:
type: string
description: The password to be used as part of the credentials. Must be 8 to 128 characters long.
example: my123secure456password789
anchorsite_override:
$ref: '#/components/schemas/AnchorsiteOverride'
connection_name:
$ref: '#/components/schemas/ConnectionName'
sip_uri_calling_preference:
type: string
description: This feature enables inbound SIP URI calls to your Credential Auth Connection. If enabled for all (unrestricted)
then anyone who calls the SIP URI @telnyx.com will be connected to your Connection. You can also
choose to allow only calls that are originated on any Connections under your account (internal).
enum:
- disabled
- unrestricted
- internal
default_on_hold_comfort_noise_enabled:
type: boolean
default: false
description: When enabled, Telnyx will generate comfort noise when you place the call on hold. If disabled, you
will need to generate comfort noise or on hold music to avoid RTP timeout.
bridge_generate_comfort_noise_on_cn:
type: boolean
default: false
description: Stores the connection preference for generating silent RTP toward the opposite call leg when comfort-noise
packets (CN, payload type 13) are received during hold. Optional; omitting this field preserves the saved value.
Only JSON true and false are accepted; null and non-boolean values are rejected. This preference is independent
of default_on_hold_comfort_noise_enabled and does not modify that setting. This API provisions the preference;
call-processing behavior is implemented separately.
example: false
dtmf_type:
$ref: '#/components/schemas/DtmfType'
encode_contact_header_enabled:
type: boolean
default: false
description: Encode the SIP contact header sent by Telnyx to avoid issues for NAT or ALG scenarios.
encrypted_media:
$ref: '#/components/schemas/EncryptedMedia'
onnet_t38_passthrough_enabled:
type: boolean
default: false
description: Enable on-net T38 if you prefer the sender and receiver negotiating T38 directly if both are on the
Telnyx network. If this is disabled, Telnyx will be able to use T38 on just one leg of the call depending on each
leg's settings.
ios_push_credential_id:
$ref: '#/components/schemas/ConnectionIosPushCredentialId'
android_push_credential_id:
$ref: '#/components/schemas/ConnectionAndroidPushCredentialId'
webhook_event_url:
type: string
format: uri
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
example: https://example.com
webhook_event_failover_url:
type:
- string
- 'null'
format: uri
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL
fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
default: ''
webhook_api_version:
type: string
description: Determines which webhook format will be used, Telnyx API v1 or v2.
enum:
- '1'
- '2'
example: '1'
default: '1'
webhook_timeout_secs:
type:
- integer
- 'null'
minimum: 0
maximum: 30
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
default: null
call_cost_in_webhooks:
type: boolean
description: Specifies if call cost webhooks should be sent for this connection.
default: false
tags:
type: array
items:
type: string
description: Tags associated with the connection.
example:
- tag1
- tag2
rtcp_settings:
$ref: '#/components/schemas/ConnectionRtcpSettings'
inbound:
$ref: '#/components/schemas/UacInboundRequest'
outbound:
$ref: '#/components/schemas/UacOutbound'
noise_suppression:
$ref: '#/components/schemas/ConnectionNoiseSuppression'
noise_suppression_details:
$ref: '#/components/schemas/ConnectionNoiseSuppressionDetails'
jitter_buffer:
$ref: '#/components/schemas/ConnectionJitterBuffer'
internal_uac_settings:
$ref: '#/components/schemas/UacInternalSettings'
external_uac_settings:
$ref: '#/components/schemas/UacExternalSettings'
example:
active: true
password: my123secure456password789
user_name: myusername123
anchorsite_override: Latency
connection_name: my name
sip_uri_calling_preference: disabled
default_on_hold_comfort_noise_enabled: false
dtmf_type: RFC 2833
encode_contact_header_enabled: true
encrypted_media: SRTP
onnet_t38_passthrough_enabled: true
ios_push_credential_id: ec0c8e5d-439e-4620-a0c1-9d9c8d02a836
android_push_credential_id: 06b09dfd-7154-4980-8b75-cebf7a9d4f8e
webhook_event_url: https://example.com
webhook_event_failover_url: https://failover.example.com
webhook_api_version: '1'
webhook_timeout_secs: 25
call_cost_in_webhooks: false
tags:
- tag1
- tag2
rtcp_settings:
port: rtcp-mux
capture_enabled: true
report_frequency_secs: 10
inbound:
ani_number_format: +E.164
dnis_number_format: +e164
codecs:
- G722
channel_limit: 10
generate_ringback_tone: true
isup_headers_enabled: true
prack_enabled: true
sip_compact_headers_enabled: true
timeout_1xx_secs: 10
timeout_2xx_secs: 20
shaken_stir_enabled: true
simultaneous_ringing: disabled
outbound:
call_parking_enabled: true
ani_override: always
channel_limit: 10
instant_ringback_enabled: true
generate_ringback_tone: true
localization: US
t38_reinvite_source: customer
outbound_voice_profile_id: '1293384261075731499'
noise_suppression: both
noise_suppression_details:
engine: deep_filter_net
attenuation_limit: 80
jitter_buffer:
enable_jitter_buffer: true
jitterbuffer_msec_min: 60
jitterbuffer_msec_max: 200
internal_uac_settings:
destination_uri: 14155550123@acme.sip.telnyx.com
external_uac_settings:
username: ext8492
password: testtesttest
proxy: sip-pbx.acme.example
auth_username: auth8492
from_user: '8492'
outbound_proxy: outbound.sip-pbx.acme.example:5061
expiration_sec: 600
transport: TLS
user_agent: null
bridge_generate_comfort_noise_on_cn: false
description: Parameters that can be updated in a UAC connection. A UAC (User Agent Client) Connection registers Telnyx
to your PBX — the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn’t
support outbound SIP registration or you need Telnyx to maintain the registration.
UpdateUnsubscribeGroupRequest:
type: object
properties:
name:
type: string
minLength: 1
maxLength: 255
description:
type: string
nullable: true
description: Partial update; `account_id`/`id` are immutable.
UpdateVerifyProfileCallRequest:
title: UpdateVerifyProfileCallRequest
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
UpdateVerifyProfileSMSRequest:
title: UpdateVerifyProfileSMSRequest
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
default: Telnyx
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
UpdateVerifyProfileSettingsWhatsAppRequest:
title: UpdateVerifyProfileSettingsWhatsAppRequest
type: object
properties:
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
waba_id:
example: '1234567890'
type:
- string
- 'null'
description: Customer Meta WABA ID for Bring-Your-Own-WABA sending
default: null
sender_phone_number:
example: '+13035551234'
type:
- string
- 'null'
description: Phone number registered on the customer WABA to send OTPs from
default: null
template_id:
example: authentication_template_id
type:
- string
- 'null'
description: Customer pre-approved authentication template ID registered on Meta
default: null
UpdatedAt:
title: Updated At
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2020-02-03T22:25:27.521Z'
UplinkData:
type: object
properties:
amount:
type: number
description: Uplink data
example: 1
unit:
description: Transmission unit
type: string
enum:
- B
- KB
- MB
default: MB
Upload:
type: object
title: Upload
properties:
ticket_id:
$ref: '#/components/schemas/UUID'
tenant_id:
type: string
format: uuid
example: ea175aba-f47c-4702-9400-efaa42688048
location_id:
type: string
format: uuid
example: c37e5036-1e87-42e6-86a2-b3e8dd39a2ad
status:
type: string
enum:
- pending_upload
- pending
- in_progress
- partial_success
- success
- error
description: Represents the status of the upload on Microsoft Teams.
example: error
default: pending_upload
available_usages:
type: array
items:
type: string
enum:
- calling_user_assignment
- first_party_app_assignment
description: Available usages for the numbers in the upload on Microsoft Teams.
error_code:
type: string
description: A code returned by Microsoft Teams if there is an error with the upload process.
error_message:
type: string
description: A message set if there is an error with the upload process.
tn_upload_entries:
type: array
items:
$ref: '#/components/schemas/TnUploadEntry'
UploadFileMessagingHostedNumberOrderRequest:
type: object
example:
loa: example loa
bill: bill example
properties:
loa:
type: string
format: binary
description: Must be a signed LOA for the numbers in the order in PDF format.
bill:
type: string
format: binary
description: Must be the last month's bill with proof of ownership of all of the numbers in the order in PDF format.
UploadMediaMultipartRequest:
type: object
title: Upload media multipart request
required:
- media
properties:
media:
description: The file you want to upload. The maximum allowed size is 20 MB.
type: string
format: binary
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum
allowed vale is 630720000, which translates to 20 years.
type: integer
example: 86400
media_name:
description: The unique identifier of a file.
type: string
example: my_file
example:
media: string($binary)
ttl_secs: 86400
media_name: my-file
UploadMediaRequest:
type: object
title: Upload media request
required:
- media_url
properties:
media_url:
description: The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size
is 20 MB.
type: string
example: http://www.example.com/audio.mp3
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum
allowed vale is 630720000, which translates to 20 years.
type: integer
example: 86400
media_name:
description: The unique identifier of a file.
type: string
example: my_file
example:
media_url: http://www.example.com/audio.mp3
ttl_secs: 86400
media_name: my-file
Url:
title: Url
required:
- url
type: object
properties:
url:
title: Url
maxLength: 2083
minLength: 1
type: string
format: uri
UrlShortenerSettings:
type:
- object
- 'null'
required:
- domain
description: 'The URL shortener feature allows automatic replacement of URLs that were generated using
a public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly,
is.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with
with links generated by Telnyx. The use of custom links can improve branding and message
deliverability.
To disable this feature, set the object field to `null`.
'
properties:
domain:
type: string
example: acct.fyi
description: 'One of the domains provided by the Telnyx URL shortener service.
'
prefix:
type: string
example: ''
description: 'Optional prefix that can be used to identify your brand, and will appear in the Telnyx generated URLs
after the domain name.
'
replace_blacklist_only:
type: boolean
example: true
description: 'Use the link replacement tool only for links that are specifically blacklisted by Telnyx.
'
send_webhooks:
type: boolean
example: false
description: 'Receive webhooks for when your replaced links are clicked. Webhooks are sent to the webhooks on the
messaging profile.
'
example:
domain: example.ex
prefix: ''
replace_blacklist_only: true
send_webhooks: false
UsageExportGuardrailEvaluation:
type: object
additionalProperties: false
properties:
id:
type: string
pattern: ^grd_[0-9a-f-]{36}$
type:
const: guardrail.evaluation
schema_version:
const: 1
request_id:
type: string
format: uuid
created_at:
type: string
format: date-time
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
token_key_id:
type: string
format: uuid
end_user_id:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
stage:
type: string
enum:
- prompt
- response
outcome:
type: string
enum:
- evaluated
- flagged
- blocked
- unevaluated
findings:
type: array
items:
$ref: '#/components/schemas/GuardrailFinding'
evaluation_input_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
evaluation_output_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
metadata:
$ref: '#/components/schemas/RequestMetadata'
required:
- id
- type
- schema_version
- request_id
- created_at
- token_group_id
- token_user_id
- token_key_id
- end_user_id
- model
- stage
- outcome
- findings
- evaluation_input_tokens
- evaluation_output_tokens
- metadata
UsageExportInferenceRequest:
type: object
additionalProperties: false
properties:
id:
type: string
pattern: ^req_[0-9a-f-]{36}_r[1-9][0-9]*$
description: 'Deterministic: req_{request_id}_r{revision}. Deduplicate on id.'
type:
const: inference.request
schema_version:
const: 1
request_id:
type: string
format: uuid
revision:
type: integer
minimum: 1
supersedes:
anyOf:
- type: string
pattern: ^req_[0-9a-f-]{36}_r[1-9][0-9]*$
- type: 'null'
description: Previous revision id; keep the highest revision per request_id.
timings:
type: object
additionalProperties: false
properties:
admitted_at:
type: string
format: date-time
first_attempt_at:
anyOf:
- type: string
format: date-time
- type: 'null'
completed_at:
anyOf:
- type: string
format: date-time
- type: 'null'
settled_at:
type: string
format: date-time
gateway_duration_ms:
anyOf:
- type: integer
minimum: 0
- type: 'null'
description: completed_at - admitted_at as recorded by the ledger; not time to first token.
required:
- admitted_at
- first_attempt_at
- completed_at
- settled_at
- gateway_duration_ms
token_group_id:
type: string
format: uuid
token_user_id:
anyOf:
- type: string
format: uuid
- type: 'null'
token_key_id:
type: string
format: uuid
end_user_id:
anyOf:
- type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
- type: 'null'
model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
provider:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
provider_model:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
route_mode:
type: string
enum:
- managed
- byok
- cache
protocol:
type: string
enum:
- openai
- anthropic
stream:
type: boolean
status:
type: string
enum:
- succeeded
- failed
- partial
- unknown
attempts:
type: integer
minimum: 0
input_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
output_tokens:
anyOf:
- type: integer
minimum: 0
- type: 'null'
usage_source:
anyOf:
- type: string
enum:
- provider
- gateway_tokenizer
- operator
- type: 'null'
usage_status:
type: string
enum:
- known
- unknown
- reconciled
cost:
anyOf:
- type: string
pattern: ^((0|[1-9][0-9]{0,8})\.[0-9]{6}|1000000000\.000000)$
description: USD decimal string with exactly 6 places, 0 to 1000000000.000000 (the Money bound); enforcement basis,
not invoice truth.
- type: 'null'
biller:
type: string
enum:
- telnyx
- provider
- none
cache_hit:
type: boolean
provider_key_id:
anyOf:
- type: string
format: uuid
- type: 'null'
configuration_version:
type: integer
minimum: 1
rate_version:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
metadata:
$ref: '#/components/schemas/RequestMetadata'
description: Customer request tags captured at admission; {} when untagged.
required:
- id
- type
- schema_version
- request_id
- revision
- supersedes
- timings
- token_group_id
- token_user_id
- token_key_id
- end_user_id
- model
- provider
- provider_model
- route_mode
- protocol
- stream
- status
- attempts
- input_tokens
- output_tokens
- usage_source
- usage_status
- cost
- biller
- cache_hit
- provider_key_id
- configuration_version
- rate_version
- metadata
UsageExportPage:
type: object
additionalProperties: false
properties:
data:
type: array
items:
$ref: '#/components/schemas/UsageExportRecord'
maxItems: 1000
meta:
type: object
additionalProperties: false
properties:
next_cursor:
type: string
minLength: 1
maxLength: 512
pattern: ^[A-Za-z0-9_-]+$
has_more:
type: boolean
horizon_lag_seconds:
type: integer
minimum: 0
required:
- next_cursor
- has_more
- horizon_lag_seconds
required:
- data
- meta
UsageExportRecord:
oneOf:
- $ref: '#/components/schemas/UsageExportInferenceRequest'
- $ref: '#/components/schemas/UsageExportGuardrailEvaluation'
discriminator:
propertyName: type
mapping:
inference.request: '#/components/schemas/UsageExportInferenceRequest'
guardrail.evaluation: '#/components/schemas/UsageExportGuardrailEvaluation'
UsageMetrics:
type: object
additionalProperties: false
properties:
requests:
type: integer
minimum: 0
input_tokens:
type: integer
minimum: 0
output_tokens:
type: integer
minimum: 0
unknown_requests:
type: integer
minimum: 0
cache_hits:
type: integer
minimum: 0
succeeded_requests:
type: integer
minimum: 0
failed_requests:
type: integer
minimum: 0
partial_requests:
type: integer
minimum: 0
spend:
$ref: '#/components/schemas/Money'
reserved_spend:
$ref: '#/components/schemas/Money'
required:
- requests
- input_tokens
- output_tokens
- unknown_requests
- cache_hits
- succeeded_requests
- failed_requests
- partial_requests
- spend
- reserved_spend
UsagePaymentMethod:
type: string
description: Setting for how costs for outbound profile are calculated.
enum:
- rate-deck
example: rate-deck
default: rate-deck
UsageReportsOptionsRecord:
type: object
description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records
properties:
product:
type: string
description: Telnyx Product
example: wireless
product_dimensions:
type: array
description: Telnyx Product Dimensions
example:
- mnc
- mcc
- sim_card_id
- sim_group_name
items:
type: string
product_metrics:
type: array
description: Telnyx Product Metrics
example:
- uplink_data_bytes
- downlink_data
- downlink_data_bytes
- uplink_data
- data_cost
items:
type: string
record_types:
type: array
description: Subproducts if applicable
items:
$ref: '#/components/schemas/usage-reports_RecordType'
UsageReportsOptionsResponse:
type: object
description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records
properties:
data:
type: array
description: Collection of product description
items:
$ref: '#/components/schemas/UsageReportsOptionsRecord'
UsageReportsResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/PaginationData'
data:
type: array
example:
- product: messaging
cost: 0.012
parts: 12
count: 8
customer_carrier_fee: 0
product_name: long_code
country_iso: LC
direction: outbound
- product: messaging
cost: 0.021
parts: 21
count: 12
customer_carrier_fee: 0
product_name: long_code
country_iso: MP
direction: outbound
items:
type: object
additionalProperties: true
UsageRequestLegacy:
required:
- end_time
- start_time
type: object
properties:
start_time:
type: string
description: Start time in ISO format
format: date-time
example: '2024-02-01T00:00:00Z'
end_time:
type: string
description: End time in ISO format
format: date-time
example: '2024-02-01T00:00:00Z'
aggregation_type:
type: integer
description: 'Aggregation type: All = 0, By Connections = 1, By Tags = 2, By Billing Group = 3'
format: int32
example: 0
connections:
type: array
description: List of connections to filter by
example:
- 123
- 456
items:
type: integer
description: List of connections to filter by
format: int64
product_breakdown:
type: integer
description: 'Product breakdown type: No breakdown = 0, DID vs Toll-free = 1, Country = 2, DID vs Toll-free per
Country = 3'
format: int32
example: 0
managed_accounts:
type: array
description: List of managed accounts to include
items:
type: string
format: uuid
example:
- f47ac10b-58cc-4372-a567-0e02b2c3d479
- 6ba7b810-9dad-11d1-80b4-00c04fd430c8
select_all_managed_accounts:
type: boolean
description: Whether to select all managed accounts
example: false
description: Request object for CDR usage report
UseCaseCategories:
title: UseCaseCategories
enum:
- 2FA
- App Notifications
- Appointments
- Auctions
- Auto Repair Services
- Bank Transfers
- Billing
- Booking Confirmations
- Business Updates
- COVID-19 Alerts
- Career Training
- Chatbot
- Conversational / Alerts
- Courier Services & Deliveries
- Emergency Alerts
- Events & Planning
- Financial Services
- Fraud Alerts
- Fundraising
- General Marketing
- General School Updates
- HR / Staffing
- Healthcare Alerts
- Housing Community Updates
- Insurance Services
- Job Dispatch
- Legal Services
- Mixed
- Motivational Reminders
- Notary Notifications
- Order Notifications
- Political
- Public Works
- Real Estate Services
- Religious Services
- Repair and Diagnostics Alerts
- Rewards Program
- Surveys
- System Alerts
- Voting Reminders
- Waitlist Alerts
- Webinar Reminders
- Workshop Alerts
type: string
description: Tollfree usecase categories
UsecaseMetadata:
title: UsecaseMetadata
type: object
properties:
annualFee:
title: Annualfee
type: number
description: Campaign annual subscription fee
maxSubUsecases:
title: Maxsubusecases
type: integer
description: Maximum number of sub-usecases declaration required.
minSubUsecases:
title: Minsubusecases
type: integer
description: Minimum number of sub-usecases declaration required.
mnoMetadata:
title: Mnometadata
type: object
description: Map of usecase metadata for each MNO. Key is the network ID of the MNO (e.g. 10017), Value is the mno
metadata for the usecase.
additionalProperties: true
monthlyFee:
title: Monthlyfee
type: number
description: Campaign monthly subscription fee
quarterlyFee:
title: Quarterlyfee
type: number
description: Campaign quarterly subscription fee
usecase:
title: Usecase
type: string
description: Campaign usecase
UserAddress:
type: object
title: UserAddress
properties:
id:
type: string
format: uuid
description: Uniquely identifies the user address.
example: c3527e69-dc5a-4b3e-8f44-99d209f83c1d
record_type:
type: string
description: Identifies the type of the resource.
example: user_address
customer_reference:
$ref: '#/components/schemas/customer_reference'
first_name:
$ref: '#/components/schemas/user-addresses_first_name'
last_name:
$ref: '#/components/schemas/user-addresses_last_name'
business_name:
$ref: '#/components/schemas/user-addresses_business_name'
phone_number:
$ref: '#/components/schemas/user-addresses_phone_number'
street_address:
$ref: '#/components/schemas/user-addresses_street_address'
extended_address:
$ref: '#/components/schemas/user-addresses_extended_address'
locality:
$ref: '#/components/schemas/user-addresses_locality'
administrative_area:
$ref: '#/components/schemas/user-addresses_administrative_area'
neighborhood:
$ref: '#/components/schemas/user-addresses_neighborhood'
borough:
$ref: '#/components/schemas/user-addresses_borough'
postal_code:
$ref: '#/components/schemas/user-addresses_postal_code'
country_code:
$ref: '#/components/schemas/user-addresses_country_code'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
UserAddressCreate:
type: object
required:
- first_name
- last_name
- business_name
- street_address
- locality
- country_code
properties:
customer_reference:
$ref: '#/components/schemas/customer_reference'
first_name:
$ref: '#/components/schemas/user-addresses_first_name'
last_name:
$ref: '#/components/schemas/user-addresses_last_name'
business_name:
$ref: '#/components/schemas/user-addresses_business_name'
phone_number:
$ref: '#/components/schemas/user-addresses_phone_number'
street_address:
$ref: '#/components/schemas/user-addresses_street_address'
extended_address:
$ref: '#/components/schemas/user-addresses_extended_address'
locality:
$ref: '#/components/schemas/user-addresses_locality'
administrative_area:
$ref: '#/components/schemas/user-addresses_administrative_area'
neighborhood:
$ref: '#/components/schemas/user-addresses_neighborhood'
borough:
$ref: '#/components/schemas/user-addresses_borough'
postal_code:
$ref: '#/components/schemas/user-addresses_postal_code'
country_code:
$ref: '#/components/schemas/user-addresses_country_code'
skip_address_verification:
$ref: '#/components/schemas/skip_address_verification'
UserBalance:
type: object
properties:
pending:
type: string
description: The account’s pending amount.
example: '10.00'
record_type:
type: string
example: balance
enum:
- balance
description: Identifies the type of the resource.
balance:
type: string
description: The account's current balance.
example: '300.00'
credit_limit:
type: string
description: The account's credit limit.
example: '100.00'
available_credit:
type: string
description: Available amount to spend (balance + credit limit)
example: '400.00'
currency:
type: string
description: The ISO 4217 currency identifier.
example: USD
example:
record_type: balance
pending: '10.00'
balance: '300.00'
credit_limit: '100.00'
available_credit: '400.00'
currency: USD
UserBundle:
type: object
required:
- id
- active
- user_id
- created_at
- billing_bundle
- resources
properties:
id:
type: string
format: uuid
example: ca1d2263-d1f1-43ac-ba53-248e7a4bb26a
description: User bundle's ID, this is used to identify the user bundle in the API.
active:
type: boolean
example: true
description: Status of the user bundle.
user_id:
type: string
format: uuid
example: 16856d8c-cd59-4b08-9ac2-1ebb01d419e1
description: The customer's ID that owns this user bundle.
created_at:
type: string
format: date
example: '2025-01-20'
description: Date the user bundle was created.
updated_at:
type:
- string
- 'null'
format: date
example: '2025-01-20'
description: Date the user bundle was last updated.
billing_bundle:
$ref: '#/components/schemas/BillingBundleSummary'
resources:
type: array
items:
$ref: '#/components/schemas/UserBundleResourceSchema'
example: []
UserBundleCreateResponse:
title: UserBundleCreateResponse
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/UserBundle'
UserBundleResourceSchema:
title: UserBundleResourceSchema
required:
- id
- resource
- resource_type
- created_at
type: object
properties:
id:
type: string
format: uuid
example: ca1d2263-d1f1-43ac-ba53-248e7a4bb26a
description: Resource's ID.
resource:
type: string
example: '+15617819942'
description: The resource itself (usually a phone number).
resource_type:
type: string
example: number
description: The type of the resource (usually 'number').
created_at:
type: string
format: date
example: '2025-01-20'
description: Date the resource was created.
updated_at:
type:
- string
- 'null'
format: date
example: '2025-01-20'
description: Date the resource was last updated.
UserBundleResourcesResponse:
title: UserBundleResourcesResponse
required:
- data
type: object
properties:
data:
title: Data
type: array
items:
$ref: '#/components/schemas/UserBundleResourceSchema'
UserBundleResponse:
title: UserBundleResponse
required:
- data
type: object
properties:
data:
$ref: '#/components/schemas/UserBundle'
UserEmbeddedBuckets:
properties:
buckets:
items:
type: string
type: array
title: Buckets
type: object
required:
- buckets
title: UserEmbeddedBuckets
UserEmbeddedBucketsData:
properties:
data:
$ref: '#/components/schemas/UserEmbeddedBuckets'
type: object
required:
- data
title: UserEmbeddedBucketsData
UserGroupReference:
type: object
title: UserGroupReference
description: A reference to a group that a user belongs to.
properties:
id:
type: string
description: The unique identifier of the group.
example: 7b09cdc3-8948-47f0-aa62-74ac943d6c59
name:
type: string
description: The name of the group.
example: Engineering
required:
- id
- name
example:
id: 7b09cdc3-8948-47f0-aa62-74ac943d6c59
name: Engineering
UserId:
description: Identifier of the user to whom the fax belongs
type: string
format: uuid
example: a7f7c54a-4df3-4bca-a65a-3da1ecc777f0
UserMessage:
type: object
title: User message.
description: Messages sent by an end user
properties:
role:
description: The role of the messages author, in this case `user`.
type: string
enum:
- user
content:
description: The contents of the user message.
type: string
metadata:
$ref: '#/components/schemas/MessageMetadata'
required:
- role
- content
example:
role: user
content: Hello, I would like some help.
UserRequirement:
type: object
properties:
requirement_id:
type: string
field_value:
type: string
field_type:
type: string
status:
type: string
enum:
- approved
- unapproved
- pending-approval
- declined
- expired
expires_at:
type: string
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
UserTagList:
type: array
items:
type: string
example: my-tag
description: 'A list of your tags on the given resource type. NOTE: The casing of the tags returned will not necessarily
match the casing of the tags when they were added to a resource. This is because the tags will have the casing of
the first time they were used within the Telnyx system regardless of source.'
ValidateAddressField:
type: object
properties:
street_address:
$ref: '#/components/schemas/street_address'
extended_address:
$ref: '#/components/schemas/extended_address'
locality:
$ref: '#/components/schemas/locality'
administrative_area:
$ref: '#/components/schemas/administrative_area'
postal_code:
$ref: '#/components/schemas/postal_code'
country_code:
$ref: '#/components/schemas/country_code'
ValidateAddressRequest:
type: object
required:
- country_code
- street_address
- postal_code
properties:
street_address:
$ref: '#/components/schemas/street_address'
extended_address:
$ref: '#/components/schemas/extended_address'
locality:
$ref: '#/components/schemas/locality'
administrative_area:
$ref: '#/components/schemas/administrative_area'
postal_code:
$ref: '#/components/schemas/postal_code'
country_code:
$ref: '#/components/schemas/country_code'
ValidateAddressResult:
type: object
title: Validate address action result
properties:
result:
type: string
description: Indicates whether an address is valid or invalid.
enum:
- valid
- invalid
example: valid
suggested:
type: object
description: Provides normalized address when available.
$ref: '#/components/schemas/ValidateAddressField'
additionalProperties: true
record_type:
type: string
description: Identifies the type of the resource.
example: address_validation
errors:
type: array
items:
$ref: '#/components/schemas/Error'
required:
- result
- suggested
ValidateCallReasonsRequest:
type: array
description: '**Bare JSON array** of candidate call-reason strings (NOT an object - there is no top-level `call_reasons`
key on this endpoint). 1–10 strings, each ≤64 characters.'
items:
type: string
maxLength: 64
minItems: 1
maxItems: 10
example:
- Appointment reminders
- Billing inquiries
ValidateCallReasonsResponse:
type: object
required:
- data
properties:
data:
type: object
required:
- all_pre_approved
- non_approved_reasons
- requires_manual_vetting
properties:
all_pre_approved:
type: boolean
description: '`true` when every supplied reason matches a pre-vetted entry in the call-reason library. When
`true`, the DIR will sail through the call-reasons portion of vetting.'
example: false
non_approved_reasons:
type: array
items:
type: string
description: Subset of the input that does NOT match the pre-vetted library. The DIR can still be submitted
with these - they will go through manual review.
example:
- Appointment reminders
- Billing inquiries
requires_manual_vetting:
type: boolean
description: '`true` when at least one supplied reason is in `non_approved_reasons`. Equivalent to `non_approved_reasons.length
> 0` and the inverse of `all_pre_approved`.'
example: true
ValidationCodes:
type: object
properties:
phone_numbers:
type: array
items:
type: object
properties:
phone_number:
type: string
x-format: +E.164
status:
type: string
enum:
- verified
- rejected
- already_verified
required:
- phone_number
- status
order_id:
type: string
format: uuid
required:
- phone_numbers
- order_id
ValidationCodesRequest:
type: object
properties:
verification_codes:
type: array
items:
type: object
properties:
phone_number:
type: string
x-format: +E.164
code:
type: string
required:
- phone_number
- code
required:
- verification_codes
ValidationError:
title: ValidationError
required:
- loc
- msg
- type
type: object
properties:
loc:
title: Location
type: array
items:
anyOf:
- type: string
- type: integer
msg:
title: Message
type: string
type:
title: Error Type
type: string
ValidationErrorResponse:
type: object
properties:
detail:
type: array
items:
type: object
properties:
loc:
type: array
items:
oneOf:
- type: string
- type: integer
msg:
type: string
type:
type: string
required:
- loc
- msg
- type
additionalProperties: true
example:
detail:
- loc:
- body
- display_name
msg: Field required
type: missing
VariableSchemaEntry:
type: object
additionalProperties: false
properties:
required:
type: boolean
description: Whether the variable must be supplied when strict variable validation is enabled.
default:
type: string
description: Default value for an optional variable. Rejected when `required` is `true`.
required:
- required
Verification:
title: Verification
type: object
properties:
id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
format: uuid
type: string
type:
$ref: '#/components/schemas/VerificationType'
record_type:
$ref: '#/components/schemas/VerificationRecordType'
phone_number:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
verify_profile_id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
type: string
format: uuid
description: The identifier of the associated Verify profile.
custom_code:
example: '43612'
type:
- string
- 'null'
description: Send a self-generated numeric code to the end-user
default: null
timeout_secs:
example: 300
type: integer
description: 'This is the number of seconds before the code of the request is expired. Once this request has expired,
the code will no longer verify the user. Note: this will override the `default_verification_timeout_secs` on the
Verify profile.'
status:
$ref: '#/components/schemas/VerificationStatus'
created_at:
example: '2020-09-14T17:03:32.965812'
type: string
updated_at:
example: '2020-09-14T17:03:32.965812'
type: string
VerificationCodesRequest:
type: object
properties:
phone_numbers:
type: array
items:
type: string
x-format: +E.164
verification_method:
type: string
enum:
- sms
- call
required:
- phone_numbers
- verification_method
VerificationProfileRecordType:
title: VerificationProfileRecordType
enum:
- verification_profile
type: string
example: verification_profile
description: The possible verification profile record types.
VerificationRecordType:
title: VerificationRecordType
enum:
- verification
type: string
example: verification
description: The possible verification record types.
VerificationRequestEgress:
title: VerificationRequestEgress
required:
- businessName
- corporateWebsite
- businessAddr1
- businessCity
- businessState
- businessZip
- businessContactFirstName
- businessContactLastName
- businessContactEmail
- businessContactPhone
- messageVolume
- phoneNumbers
- useCase
- useCaseSummary
- productionMessageContent
- optInWorkflow
- optInWorkflowImageURLs
- additionalInformation
- id
- verificationRequestId
type: object
properties:
businessName:
title: Businessname
type: string
example: Telnyx LLC
corporateWebsite:
title: Corporatewebsite
type: string
example: http://example.com
businessAddr1:
title: Businessaddr1
type: string
example: 600 Congress Avenue
businessAddr2:
title: Businessaddr2
type: string
example: 14th Floor
businessCity:
title: Businesscity
type: string
example: Austin
businessState:
title: Businessstate
type: string
example: Texas
businessZip:
title: Businesszip
type: string
example: '78701'
businessContactFirstName:
title: Businesscontactfirstname
type: string
example: John
businessContactLastName:
title: Businesscontactlastname
type: string
example: Doe
businessContactEmail:
title: Businesscontactemail
type: string
example: email@example.com
businessContactPhone:
title: Businesscontactphone
type: string
example: '+18005550100'
messageVolume:
allOf:
- $ref: '#/components/schemas/Volume'
description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000;
5,000,000; 10,000,000+'
example: 100,000
phoneNumbers:
title: Phonenumbers
type: array
items:
$ref: '#/components/schemas/TFPhoneNumber'
example:
- phoneNumber: '+18773554398'
- phoneNumber: '+18773554399'
useCase:
allOf:
- $ref: '#/components/schemas/UseCaseCategories'
example: 2FA
useCaseSummary:
title: Usecasesummary
type: string
example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to
sign into the portal
productionMessageContent:
title: Productionmessagecontent
type: string
example: Your Telnyx OTP is XXXX
optInWorkflow:
title: Optinworkflow
type: string
example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA
verification for security purposes. If they've opted in a confirmation message is sent out to the handset
optInWorkflowImageURLs:
title: Optinworkflowimageurls
type: array
items:
$ref: '#/components/schemas/Url'
example:
- url: https://telnyx.com/sign-up
- url: https://telnyx.com/company/data-privacy
additionalInformation:
title: Additionalinformation
type: string
example: This is for security purposes, blah blah blah
isvReseller:
title: Isvreseller
type: string
example: 'Yes'
webhookUrl:
title: Webhookurl
type: string
example: http://example-webhook.com
businessRegistrationNumber:
title: Businessregistrationnumber
type: string
example: 12-3456789
businessRegistrationType:
title: Businessregistrationtype
type: string
example: EIN
businessRegistrationCountry:
title: Businessregistrationcountry
type: string
example: US
doingBusinessAs:
title: Doingbusinessas
type: string
example: Acme Services
entityType:
allOf:
- $ref: '#/components/schemas/toll-free-verification_EntityType'
example: PRIVATE_PROFIT
optInConfirmationResponse:
title: Optinconfirmationresponse
type: string
example: You have successfully opted in to receive messages from Acme Corp
helpMessageResponse:
title: Helpmessageresponse
type: string
example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com'
privacyPolicyURL:
title: Privacypolicyurl
type: string
example: https://example.com/privacy
termsAndConditionURL:
title: Termsandconditionurl
type: string
example: https://example.com/terms
ageGatedContent:
title: Agegatedcontent
type: boolean
example: false
optInKeywords:
title: Optinkeywords
type: string
example: START, YES, SUBSCRIBE
campaignVerifyAuthorizationToken:
title: Campaignverifyauthorizationtoken
type:
- string
- 'null'
maxLength: 500
description: Campaign Verify Authorization Token required for Political use case submissions starting February 17,
2026
example: cv_token_abc123xyz
id:
title: Id
type: string
format: uuid
verificationRequestId:
title: Verificationrequestid
type: string
verificationStatus:
allOf:
- $ref: '#/components/schemas/TFVerificationStatus'
default: In Progress
description: A verification request as it comes out of the database
VerificationRequestStatus:
title: VerificationRequestStatus
required:
- businessName
- corporateWebsite
- businessAddr1
- businessCity
- businessState
- businessZip
- businessContactFirstName
- businessContactLastName
- businessContactEmail
- businessContactPhone
- messageVolume
- phoneNumbers
- useCase
- useCaseSummary
- productionMessageContent
- optInWorkflow
- optInWorkflowImageURLs
- additionalInformation
- id
- verificationStatus
type: object
properties:
businessName:
title: Businessname
type: string
example: Telnyx LLC
corporateWebsite:
title: Corporatewebsite
type: string
example: http://example.com
businessAddr1:
title: Businessaddr1
type: string
example: 600 Congress Avenue
businessAddr2:
title: Businessaddr2
type: string
example: 14th Floor
businessCity:
title: Businesscity
type: string
example: Austin
businessState:
title: Businessstate
type: string
example: Texas
businessZip:
title: Businesszip
type: string
example: '78701'
businessContactFirstName:
title: Businesscontactfirstname
type: string
example: John
businessContactLastName:
title: Businesscontactlastname
type: string
example: Doe
businessContactEmail:
title: Businesscontactemail
type: string
example: email@example.com
businessContactPhone:
title: Businesscontactphone
type: string
example: '+18889809750'
messageVolume:
allOf:
- $ref: '#/components/schemas/Volume'
description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000;
5,000,000; 10,000,000+'
example: 100,000
phoneNumbers:
title: Phonenumbers
type: array
items:
$ref: '#/components/schemas/TFPhoneNumber'
example:
- phoneNumber: '+18773554398'
- phoneNumber: '+18773554399'
useCase:
allOf:
- $ref: '#/components/schemas/UseCaseCategories'
example: 2FA
useCaseSummary:
title: Usecasesummary
type: string
example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to
sign into the portal
productionMessageContent:
title: Productionmessagecontent
type: string
example: Your Telnyx OTP is XXXX
optInWorkflow:
title: Optinworkflow
type: string
example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA
verification for security purposes. If they've opted in a confirmation message is sent out to the handset
optInWorkflowImageURLs:
title: Optinworkflowimageurls
type: array
items:
$ref: '#/components/schemas/Url'
example:
- url: https://telnyx.com/sign-up
- url: https://telnyx.com/company/data-privacy
additionalInformation:
title: Additionalinformation
type: string
example: This is for security purposes, blah blah blah
isvReseller:
title: Isvreseller
type: string
example: 'Yes'
webhookUrl:
title: Webhookurl
type: string
example: http://example-webhook.com
businessRegistrationNumber:
title: Businessregistrationnumber
type: string
example: 12-3456789
businessRegistrationType:
title: Businessregistrationtype
type: string
example: EIN
businessRegistrationCountry:
title: Businessregistrationcountry
type: string
example: US
doingBusinessAs:
title: Doingbusinessas
type: string
example: Acme Services
entityType:
allOf:
- $ref: '#/components/schemas/toll-free-verification_EntityType'
example: PRIVATE_PROFIT
optInConfirmationResponse:
title: Optinconfirmationresponse
type: string
example: You have successfully opted in to receive messages from Acme Corp
helpMessageResponse:
title: Helpmessageresponse
type: string
example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com'
privacyPolicyURL:
title: Privacypolicyurl
type: string
example: https://example.com/privacy
termsAndConditionURL:
title: Termsandconditionurl
type: string
example: https://example.com/terms
ageGatedContent:
title: Agegatedcontent
type: boolean
example: false
optInKeywords:
title: Optinkeywords
type: string
example: START, YES, SUBSCRIBE
campaignVerifyAuthorizationToken:
title: Campaignverifyauthorizationtoken
type:
- string
- 'null'
maxLength: 500
description: Campaign Verify Authorization Token required for Political use case submissions starting February 17,
2026
example: cv_token_abc123xyz
id:
title: Id
type: string
format: uuid
example: eaba9f52-164e-58e0-b002-4f668e18b7ed
verificationStatus:
allOf:
- $ref: '#/components/schemas/TFVerificationStatus'
example: Waiting For Customer
reason:
title: Reason
type: string
example: Unfortunately, we have to cancel this request as we do not support non tollfree US numbers.
createdAt:
title: Createdat
type: string
format: date-time
example: '2024-01-23T18:10:02.574Z'
updatedAt:
title: Updatedat
type: string
format: date-time
example: '2024-01-23T18:10:02.574Z'
description: A verification request and its status, suitable for returning to users
VerificationStatus:
title: VerificationStatus
enum:
- pending
- accepted
- invalid
- expired
- error
type: string
example: accepted
description: The possible statuses of the verification request.
VerificationStatusHistoryEntry:
title: VerificationStatusHistoryEntry
required:
- verificationStatus
- updatedAt
type: object
properties:
verificationStatus:
allOf:
- $ref: '#/components/schemas/TFVerificationStatus'
description: The verification status at this point in time
reason:
title: Reason
type:
- string
- 'null'
maxLength: 500
description: An explanation of why this request has its current status.
example: Unfortunately, we have to cancel this request as we do not support non tollfree US numbers.
updatedAt:
title: Updatedat
type: string
format: date-time
description: The timestamp at which this status change occurred
description: A single entry in the verification request status history
VerificationType:
title: VerificationType
enum:
- sms
- call
- flashcall
- whatsapp
type: string
example: sms
description: The possible types of verification.
VerifiedNumberRecordType:
title: VerifiedNumberRecordType
enum:
- verified_number
type: string
example: verified_number
description: The possible verified numbers record types.
VerifiedNumberResponse:
title: VerifiedNumberResponse
type: object
properties:
phone_number:
example: '+15551234567'
type: string
record_type:
$ref: '#/components/schemas/VerifiedNumberRecordType'
verified_at:
example: '2020-09-14T17:03:32.965812'
type: string
VerifiedNumberResponseDataWrapper:
title: VerifiedNumberResponseDataWrapper
type: object
properties:
data:
type: object
$ref: '#/components/schemas/VerifiedNumberResponse'
additionalProperties: true
VerifyBrandSmsOtpRequest:
title: VerifyBrandSmsOtpRequest
required:
- otpPin
type: object
properties:
otpPin:
title: Otppin
type: string
description: The OTP PIN received via SMS
example: '123456'
minLength: 4
maxLength: 10
description: Request body for verifying a Brand SMS OTP
VerifyDetailRecord:
type: object
properties:
id:
type: string
format: uuid
example: 0add777f-1549-46f7-84e9-ad7350f6aa97
description: Unique ID of the verification
verify_profile_id:
type: string
format: uuid
example: 49000176-1ab2-8bc1-352e-4009f6c37f82
delivery_status:
type: string
example: pending
verification_status:
type: string
example: pending
destination_phone_number:
type: string
description: E.164 formatted phone number
example: '+13124515883'
verify_channel_type:
description: 'Depending on the type of verification, the `verify_channel_id`
points to one of the following channel ids;
---
verify_channel_type | verify_channel_id
------------------- | -----------------
sms, psd2 | messaging_id
call, flashcall | call_control_id
---
'
type: string
enum:
- sms
- psd2
- call
- flashcall
verify_channel_id:
type: string
format: uuid
example: 5b7a8365-91f3-420a-befc-498d1efd6c20
created_at:
type: string
format: date-time
example: '2021-07-08T00:00:41.000000+00:00'
updated_at:
type: string
format: date-time
example: '2021-07-08T00:00:41.000000+00:00'
rate:
type: string
example: '0.002'
description: Currency amount per billing unit used to calculate the Telnyx billing costs
rate_measured_in:
type: string
example: number of occurrences
description: Billing unit used to calculate the Telnyx billing costs
verify_usage_fee:
type: string
example: '0.002'
description: Currency amount for Verify Usage Fee
currency:
type: string
example: USD
description: Telnyx account currency used to describe monetary values, including billing costs
record_type:
type: string
example: verification_detail_record
default: verification_detail_record
required:
- record_type
VerifyProfileCallResponse:
title: VerifyProfileCallResponse
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
VerifyProfileFlashcallResponse:
title: VerifyProfileFlashcallResponse
type: object
properties:
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
VerifyProfileMessageTemplateResponse:
title: VerifyProfileResponse
type: object
properties:
id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
text:
example: 'Your {{app_name}} verification code is: {{code}}.'
type: string
VerifyProfileResponse:
title: VerifyProfileResponse
type: object
properties:
id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
format: uuid
type: string
name:
example: Test Profile
type: string
webhook_url:
type: string
example: http://example.com/webhook
webhook_failover_url:
type: string
example: http://example.com/webhook/failover
daily_spend_limit_enabled:
type: boolean
default: false
description: Whether the daily spend limit is enforced for this verify profile.
example: true
daily_spend_limit:
type: number
minimum: 0
description: The maximum daily spend allowed on this verify profile, in USD.
example: 100.0
record_type:
$ref: '#/components/schemas/VerificationProfileRecordType'
created_at:
example: '2020-09-14T17:03:32.965812'
type: string
updated_at:
example: '2020-09-14T17:03:32.965812'
type: string
language:
type: string
example: en-US
sms:
type: object
$ref: '#/components/schemas/VerifyProfileSMSResponse'
additionalProperties: true
call:
type: object
$ref: '#/components/schemas/VerifyProfileCallResponse'
additionalProperties: true
flashcall:
type: object
$ref: '#/components/schemas/VerifyProfileFlashcallResponse'
additionalProperties: true
whatsapp:
type: object
$ref: '#/components/schemas/VerifyProfileWhatsAppResponse'
additionalProperties: true
VerifyProfileResponseDataWrapper:
title: VerifyProfileResponseDataWrapper
type: object
properties:
data:
type: object
$ref: '#/components/schemas/VerifyProfileResponse'
additionalProperties: true
VerifyProfileSMSResponse:
title: VerifyProfileSMSResponse
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
default: Telnyx
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
VerifyProfileWhatsAppResponse:
title: VerifyProfileWhatsAppResponse
type: object
properties:
messaging_template_id:
example: 0abb5b4f-459f-445a-bfcd-488998b7572d
format: uuid
type: string
description: The message template identifier selected from /verify_profiles/templates
app_name:
example: Example Secure App
description: The name that identifies the application requesting 2fa in the verification message.
type: string
pattern: ^[A-Za-z0-9 -]{1,30}$
code_length:
example: 6
type: integer
description: The length of the verify code to generate.
default: 5
whitelisted_destinations:
description: Enabled country destinations to send verification codes. The elements in the list must be valid ISO
3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed. **Conditionally required:**
this field must be provided when your organization is configured to require explicit whitelisted destinations;
otherwise it is optional.
example:
- US
- CA
type: array
items:
description: ISO 3166-1 alpha-2 country code
type: string
pattern: ^[A-Z]{2}$
default_verification_timeout_secs:
example: 300
description: For every request that is initiated via this Verify profile, this sets the number of seconds before
a verification request code expires. Once the verification request expires, the user cannot use the code to verify
their identity.
type: integer
default: 300
waba_id:
example: '1234567890'
type:
- string
- 'null'
description: Customer Meta WABA ID for Bring-Your-Own-WABA sending
default: null
sender_phone_number:
example: '+13035551234'
type:
- string
- 'null'
description: Phone number registered on the customer WABA to send OTPs from
default: null
template_id:
example: authentication_template_id
type:
- string
- 'null'
description: Customer pre-approved authentication template ID registered on Meta
default: null
VerifyVerificationCodeRequestById:
title: VerifyVerificationCodeRequestById
type: object
properties:
code:
example: '17686'
type: string
description: This is the code the user submits for verification.
status:
enum:
- accepted
- rejected
type: string
example: accepted
description: Identifies if the verification code has been accepted or rejected. Only permitted if custom_code was
used for the verification.
VerifyVerificationCodeRequestByPhoneNumber:
title: VerifyVerificationCodeRequestByPhoneNumber
required:
- code
- verify_profile_id
type: object
properties:
code:
example: '17686'
type: string
description: This is the code the user submits for verification.
verify_profile_id:
example: 12ade33a-21c0-473b-b055-b3c836e1c292
type: string
format: uuid
description: The identifier of the associated Verify profile.
VerifyVerificationCodeResponse:
title: VerifyVerificationCodeResponse
required:
- data
type: object
properties:
data:
required:
- phone_number
- response_code
type: object
properties:
phone_number:
example: '+13035551234'
type: string
description: +E164 formatted phone number.
response_code:
enum:
- accepted
- rejected
type: string
example: accepted
description: Identifies if the verification code has been accepted or rejected.
Vertical:
title: Vertical
enum:
- AGRICULTURE
- COMMUNICATION
- CONSTRUCTION
- EDUCATION
- ENERGY
- ENTERTAINMENT
- FINANCIAL
- GAMBLING
- GOVERNMENT
- HEALTHCARE
- HOSPITALITY
- HUMAN_RESOURCES
- INSURANCE
- LEGAL
- MANUFACTURING
- NGO
- POLITICAL
- POSTAL
- PROFESSIONAL
- REAL_ESTATE
- RETAIL
- TECHNOLOGY
- TRANSPORTATION
description: Vertical or industry segment of the brand or campaign.
example: TECHNOLOGY
type: string
VideoRegion:
type: object
properties:
x_pos:
description: X axis value (in pixels) of the region's upper left corner relative to the upper left corner of the
whole room composition viewport.
type: integer
example: 100
default: 0
y_pos:
description: Y axis value (in pixels) of the region's upper left corner relative to the upper left corner of the
whole room composition viewport.
type: integer
example: 100
default: 0
z_pos:
description: Regions with higher z_pos values are stacked on top of regions with lower z_pos values
type: integer
minimum: -99
maximum: 99
example: 1
default: 0
height:
description: Height of the video region
type: integer
minimum: 16
example: 360
width:
description: Width of the video region
type: integer
minimum: 16
example: 480
max_columns:
description: Maximum number of columns of the region's placement grid. By default, the region has as many columns
as needed to layout all the specified video sources.
type: integer
minimum: 1
maximum: 1000
example: 3
max_rows:
description: Maximum number of rows of the region's placement grid. By default, the region has as many rows as needed
to layout all the specified video sources.
type: integer
minimum: 1
maximum: 1000
example: 3
video_sources:
description: Array of video recording ids to be composed in the region. Can be "*" to specify all video recordings
in the session
type: array
items:
type: string
format: uuid
example: 7b61621f-62e0-4aad-ab11-9fd19e272e73
VirtualCrossConnect:
allOf:
- $ref: '#/components/schemas/Record'
- $ref: '#/components/schemas/Interface'
- type: object
title: VirtualCrossConnect
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: virtual_cross_connect
cloud_provider:
type: string
enum:
- aws
- azure
- gce
description: The Virtual Private Cloud with which you would like to establish a cross connect.
example: aws
cloud_provider_region:
type: string
description: The region where your Virtual Private Cloud hosts are located. The available regions can
be found using the /virtual_cross_connect_regions endpoint.
example: us-east-1
bgp_asn:
type: number
description: The Border Gateway Protocol (BGP) Autonomous System Number (ASN). If null, value will be assigned
by Telnyx.
example: 1234
bandwidth_mbps:
type: number
description: The desired throughput in Megabits per Second (Mbps) for your Virtual Cross Connect. The
available bandwidths can be found using the /virtual_cross_connect_regions endpoint.
example: 50
primary_enabled:
type: boolean
description: Indicates whether the primary circuit is enabled. Setting this to `false` will disable the circuit.
example: true
readOnly: true
primary_cloud_account_id:
type: string
description: The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud
provider.
example: '123456789012'
primary_telnyx_ip:
type: string
description: The IP address assigned to the Telnyx side of the Virtual Cross Connect. If none is provided,
one will be generated for you. This value should be null for GCE as Google will only inform you of
your assigned IP once the connection has been accepted.
example: 169.254.0.1
primary_cloud_ip:
type: string
description: The IP address assigned for your side of the Virtual Cross Connect. If none is provided,
one will be generated for you. This value should be null for GCE as Google will only inform you of
your assigned IP once the connection has been accepted.
example: 169.254.0.2
primary_bgp_key:
type: string
description: The authentication key for BGP peer configuration.
example: yFV4wEPtPVPfDUGLWiyQzwga
secondary_enabled:
type: boolean
description: Indicates whether the secondary circuit is enabled. Setting this to `false` will disable the circuit.
example: true
readOnly: true
secondary_cloud_account_id:
type: string
description: The identifier for your Virtual Private Cloud. The number will be different based upon your Cloud
provider. This attribute is only necessary for GCE.
example: ''
secondary_telnyx_ip:
type: string
description: The IP address assigned to the Telnyx side of the Virtual Cross Connect. If none is provided,
one will be generated for you. This value should be null for GCE as Google will only inform you of
your assigned IP once the connection has been accepted.
example: 169.254.0.3
secondary_cloud_ip:
type: string
description: The IP address assigned for your side of the Virtual Cross Connect. If none is provided,
one will be generated for you. This value should be null for GCE as Google will only inform you of
your assigned IP once the connection has been accepted.
example: 169.254.0.4
secondary_bgp_key:
type: string
description: The authentication key for BGP peer configuration.
example: ge1lONeK9RcA83uuWaw9DvZy
VirtualCrossConnectCombined:
allOf:
- $ref: '#/components/schemas/VirtualCrossConnectCreate'
- $ref: '#/components/schemas/VirtualCrossConnectPatch'
- $ref: '#/components/schemas/RegionOut'
VirtualCrossConnectCoverage:
allOf:
- type: object
title: VirtualCrossConnectCoverage
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: virtual_cross_connects_coverage
location:
$ref: '#/components/schemas/netapps_Location'
cloud_provider:
type: string
enum:
- aws
- azure
- gce
description: The Virtual Private Cloud with which you would like to establish a cross connect.
example: aws
cloud_provider_region:
type: string
description: The region where your Virtual Private Cloud hosts are located. Should be identical to how the cloud
provider names region, i.e. us-east-1 for AWS but Frankfurt for Azure
example: us-east-1
available_bandwidth:
type: array
description: The available throughput in Megabits per Second (Mbps) for your Virtual Cross Connect.
items:
type: number
example:
- 50
- 100
- 200
- 500
VirtualCrossConnectCreate:
allOf:
- $ref: '#/components/schemas/VirtualCrossConnect'
- $ref: '#/components/schemas/RegionIn'
- type: object
title: VirtualCrossConnectCreate
required:
- network_id
- region_code
- cloud_provider
- cloud_provider_region
- bgp_asn
- primary_cloud_account_id
VirtualCrossConnectPatch:
allOf:
- type: object
title: VirtualCrossConnectPatch
properties:
primary_enabled:
type: boolean
description: Indicates whether the primary circuit is enabled. Setting this to `false` will disable the circuit.
example: true
primary_routing_announcement:
description: Whether the primary BGP route is being announced.
type: boolean
example: false
primary_cloud_ip:
type: string
description: The IP address assigned for your side of the Virtual Cross Connect. If none is provided,
one will be generated for you. This value can not be patched once the VXC has bene provisioned.
example: 169.254.0.2
secondary_enabled:
type: boolean
description: Indicates whether the secondary circuit is enabled. Setting this to `false` will disable the circuit.
example: true
secondary_routing_announcement:
description: Whether the secondary BGP route is being announced.
type: boolean
example: false
secondary_cloud_ip:
type: string
description: The IP address assigned for your side of the Virtual Cross Connect. If none is provided,
one will be generated for you. This value can not be patched once the VXC has bene provisioned.
example: 169.254.0.4
VisionTool:
description: '(BETA) Lets the assistant look at recent image frames the client sent into the conversation (for example
webcam or screen-share frames). Frames are sent with `conversation.item.create` and `item.buffer: true`; they never
trigger a response on their own. The assistant decides when to look and which frames it needs. Requires a model that
supports image input.'
properties:
type:
type: string
enum:
- vision
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
vision:
$ref: '#/components/schemas/VisionToolParams'
type: object
required:
- type
title: VisionTool
VisionToolParams:
properties:
max_frame_age_secs:
type: integer
minimum: 1
default: 10
description: Frames received longer ago than this many seconds are not shown to the assistant, so it never describes
a frozen or disconnected camera as live.
type: object
title: VisionToolParams
Voice:
type: object
description: A voice available for text-to-speech synthesis.
properties:
provider:
type: string
description: The TTS provider.
name:
type: string
description: Voice name.
voice_id:
type: string
description: Voice identifier.
language:
type: string
description: Language code.
gender:
type: string
description: Voice gender.
hosted:
type: boolean
description: Whether this voice runs on Telnyx-hosted infrastructure (`true`) or is provided by a third-party vendor
(`false`).
VoiceCloneData:
type: object
description: A voice clone object.
properties:
record_type:
type: string
enum:
- voice_clone
description: Identifies the resource type.
id:
type: string
format: uuid
description: Unique identifier for the voice clone.
source_voice_design_id:
type:
- string
- 'null'
format: uuid
description: UUID of the source voice design. `null` for upload-based clones.
source_voice_design_version:
type:
- integer
- 'null'
description: Version of the source voice design used. `null` for upload-based clones.
name:
type: string
description: Name of the voice clone.
language:
type:
- string
- 'null'
description: ISO 639-1 language code of the voice clone.
gender:
type:
- string
- 'null'
enum:
- male
- female
- neutral
- null
description: Gender of the voice clone.
label:
type:
- string
- 'null'
description: Voice style description. If not explicitly set on upload, falls back to the source design's prompt
text.
created_at:
type: string
format: date-time
description: Timestamp when the voice clone was created.
updated_at:
type: string
format: date-time
description: Timestamp when the voice clone was last updated.
provider:
type: string
enum:
- telnyx
- minimax
- Telnyx
- Minimax
description: Voice synthesis provider used for this clone.
provider_supported_models:
type: array
items:
type: string
description: List of TTS model identifiers supported by this clone's provider.
provider_voice_id:
type:
- string
- 'null'
description: Provider-specific voice identifier used for TTS synthesis. May differ from the clone UUID depending
on the provider and model.
model_id:
type: string
enum:
- Qwen3TTS
- Ultra
- Bayan
- speech-2.8-turbo
description: TTS model identifier for the voice clone.
status:
type: string
enum:
- active
- pending
- failed
- expired
description: Clone status. pending for Ultra clones while on-prem import is in progress, active once ready, failed
if verification timed out, expired if not kept alive.
VoiceCloneListResponse:
type: object
description: Paginated list of voice clones.
properties:
data:
type: array
items:
$ref: '#/components/schemas/VoiceCloneData'
description: Array of voice clone objects.
meta:
$ref: '#/components/schemas/voice-designs_PaginationMeta'
VoiceCloneRequest:
description: Request body for creating a voice clone from an existing voice design.
discriminator:
propertyName: provider
mapping:
telnyx: '#/components/schemas/TelnyxDesignClone'
Telnyx: '#/components/schemas/TelnyxDesignClone'
minimax: '#/components/schemas/MinimaxDesignClone'
Minimax: '#/components/schemas/MinimaxDesignClone'
oneOf:
- $ref: '#/components/schemas/TelnyxDesignClone'
- $ref: '#/components/schemas/MinimaxDesignClone'
VoiceCloneResponse:
type: object
description: Response envelope for a single voice clone.
properties:
data:
$ref: '#/components/schemas/VoiceCloneData'
example:
data:
record_type: voice_clone
id: 660f9511-f3ac-52e5-b827-557766551111
source_voice_design_id: 550e8400-e29b-41d4-a716-446655440000
source_voice_design_version: 1
name: clone-narrator
language: en
gender: male
label: Speak in a warm, friendly tone
created_at: '2024-01-01T00:00:00Z'
updated_at: '2024-01-01T00:00:00Z'
provider: Telnyx
provider_supported_models:
- Qwen3TTS
provider_voice_id: 660f9511-f3ac-52e5-b827-557766551111
model_id: Qwen3TTS
status: active
VoiceCloneUpdateRequest:
type: object
description: Request body for updating a voice clone.
required:
- name
properties:
name:
type: string
minLength: 1
maxLength: 255
description: New name for the voice clone.
language:
type: string
description: Updated ISO 639-1 language code or `auto`.
gender:
type: string
enum:
- male
- female
- neutral
description: Updated gender for the voice clone.
example:
name: updated-clone
VoiceCloneUploadRequest:
description: 'Multipart form data for creating a voice clone from a direct audio upload. Maximum file size: 20MB.'
oneOf:
- $ref: '#/components/schemas/TelnyxQwen3TTSClone'
- $ref: '#/components/schemas/TelnyxUltraClone'
- $ref: '#/components/schemas/TelnyxBayanClone'
- $ref: '#/components/schemas/MinimaxClone'
VoiceConfig:
description: "The voice to be used by the voice assistant. Currently we support ElevenLabs, Telnyx and AWS voices.\n\
\n **Supported Providers:**\n- **AWS:** Use `AWS.Polly.` (e.g., `AWS.Polly.Joanna`). For neural voices, which\
\ provide more realistic, human-like speech, append `-Neural` to the `VoiceId` (e.g., `AWS.Polly.Joanna-Neural`).\
\ Check the [available voices](https://docs.aws.amazon.com/polly/latest/dg/available-voices.html) for compatibility.\n\
- **Azure:** Use `Azure.` (e.g., `Azure.en-CA-ClaraNeural`, `Azure.en-CA-LiamNeural`, `Azure.en-US-BrianMultilingualNeural`,\
\ `Azure.en-US-Ava:DragonHDLatestNeural`). For a complete list of voices, go to [Azure Voice Gallery](https://speech.microsoft.com/portal/voicegallery).\n\
- **ElevenLabs:** Use `ElevenLabs..` (e.g., `ElevenLabs.BaseModel.John`). The `ModelId` part is\
\ optional. To use ElevenLabs, you must provide your ElevenLabs API key as an integration secret under `\"voice_settings\"\
: {\"api_key_ref\": \"\"}`. See [integration secrets documentation](https://developers.telnyx.com/api/secrets-manager/integration-secrets/create-integration-secret)\
\ for details. Check [available voices](https://elevenlabs.io/docs/api-reference/get-voices).\n - **Telnyx:** Use\
\ `Telnyx..`\n- **Inworld:** Use `Inworld..` (e.g., `Inworld.Mini.Loretta`,\
\ `Inworld.Max.Oliver`, `Inworld.TTS2.Loretta`). Supported models: `Mini`, `Max`, `TTS2`.\n- **Fish Audio:** Use `FishAudio..`\
\ (e.g., `FishAudio.s2.1-pro.`). Supported models: `s2.1-pro`, `s2-pro`, `s1`. `VoiceId` is a Fish Voice-Library\
\ reference ID.\n- **Soniox:** Use `Soniox..` (e.g., `Soniox.tts-rt-v2.Emma`). Supported model:\
\ `tts-rt-v2`. Browse the catalog via the [Voices API](https://developers.telnyx.com/api-reference/text-to-speech-commands/list-available-voices).\
\ Every voice speaks all supported languages; set `language` to the two-letter ISO 639-1 code of the text, for example\
\ `it`. SSML is not supported. Use `voice_settings` to configure `speed` (0.7 to 1.3) and `reduce_silence`.\n- **xAI:**\
\ Use `xAI.` (e.g., `xAI.eve`). Available voices: `eve`, `ara`, `rex`, `sal`, `leo`.\n- **Humain:** Use `Humain.`\
\ (e.g., `Humain.sara-ar`). Available voices: `sara-en`, `abdulaziz-en`, `sara-ar`, `abdulaziz-ar`, `nourah-ar`, `abdullah-ar`.\
\ Native Arabic (Saudi dialect) and English voices only — no `ModelId` segment."
type: string
default: Telnyx.KokoroTTS.af
example: Telnyx.KokoroTTS.af
VoiceDesignData:
type: object
description: A voice design object with full version detail.
properties:
record_type:
type: string
enum:
- voice_design
description: Identifies the resource type.
id:
type: string
format: uuid
description: Unique identifier for the voice design.
name:
type: string
description: Name of the voice design.
version:
type: integer
description: Version number of this voice design.
text:
type: string
description: Sample text used to synthesize this version.
prompt:
type: string
description: Natural language prompt used to define the voice style for this version.
voice_sample_size:
type: integer
description: Size of the voice sample audio in bytes.
version_created_at:
type: string
format: date-time
description: Timestamp when this specific version was created.
created_at:
type: string
format: date-time
description: Timestamp when the voice design was first created.
updated_at:
type: string
format: date-time
description: Timestamp when the voice design was last updated.
provider:
type:
- string
- 'null'
enum:
- telnyx
- minimax
- Telnyx
- Minimax
- null
description: Voice synthesis provider used for this design.
provider_supported_models:
type: array
items:
type: string
description: List of TTS model identifiers supported by this design's provider (e.g. `Qwen3TTS`, `speech-02-turbo`).
provider_voice_id:
type:
- string
- 'null'
description: Provider-specific voice identifier. For Telnyx designs this is the design version ID; for Minimax it
is the Minimax-assigned voice ID.
VoiceDesignListResponse:
type: object
description: Paginated list of voice designs.
properties:
data:
type: array
items:
$ref: '#/components/schemas/VoiceDesignSummaryData'
description: Array of voice design summary objects.
meta:
$ref: '#/components/schemas/voice-designs_PaginationMeta'
VoiceDesignRequest:
type: object
description: Request body for creating a new voice design or adding a version to an existing one. Omit `voice_design_id`
to create a new design; include it to add a new version.
required:
- text
- prompt
properties:
name:
type: string
minLength: 1
maxLength: 255
description: Name for the voice design. Required when creating a new design (`voice_design_id` is not provided);
ignored when adding a version. Cannot be a UUID.
voice_design_id:
type: string
format: uuid
description: ID of an existing voice design to add a new version to. When provided, a new version is created instead
of a new design.
text:
type: string
description: Sample text to synthesize for this voice design.
prompt:
type: string
description: Natural language description of the voice style, e.g. 'Speak in a warm, friendly tone with a slight
British accent'.
language:
type: string
default: Auto
description: 'Language for synthesis. Supported values: Auto, Chinese, English, Japanese, Korean, German, French,
Russian, Portuguese, Spanish, Italian. Defaults to Auto.'
temperature:
type: number
format: float
minimum: 0.0
maximum: 2.0
description: 'Sampling temperature controlling randomness. Higher values produce more varied output. Default: 0.9.'
top_k:
type: integer
minimum: 1
maximum: 1000
description: 'Top-k sampling parameter — limits the token vocabulary considered at each step. Default: 50.'
top_p:
type: number
format: float
minimum: 0.0
maximum: 1.0
description: 'Top-p (nucleus) sampling parameter — cumulative probability cutoff for token selection. Default: 1.0.'
repetition_penalty:
type: number
format: float
minimum: 1.0
maximum: 2.0
description: 'Repetition penalty to reduce repeated patterns in generated audio. Default: 1.05.'
max_new_tokens:
type: integer
minimum: 100
maximum: 4096
description: 'Maximum number of tokens to generate. Default: 2048.'
provider:
type: string
enum:
- telnyx
- minimax
- Telnyx
- Minimax
default: telnyx
description: Voice synthesis provider. `telnyx` uses the Qwen3TTS model; `minimax` uses the Minimax speech models.
Case-insensitive. Defaults to `telnyx`.
example:
name: friendly-narrator
text: Hello, welcome to our service.
prompt: Speak in a warm, friendly tone
language: Auto
provider: telnyx
VoiceDesignResponse:
type: object
description: Response envelope for a single voice design with full version detail.
properties:
data:
$ref: '#/components/schemas/VoiceDesignData'
example:
data:
record_type: voice_design
id: 550e8400-e29b-41d4-a716-446655440000
name: friendly-narrator
version: 1
text: Hello, welcome.
prompt: Speak in a warm tone
voice_sample_size: 48000
version_created_at: '2024-01-01T00:00:00Z'
created_at: '2024-01-01T00:00:00Z'
updated_at: '2024-01-01T00:00:00Z'
provider: Telnyx
provider_supported_models:
- Qwen3TTS
provider_voice_id: 550e8400-e29b-41d4-a716-446655440000
VoiceDesignSummaryData:
type: object
description: A summarized voice design object (without version-specific fields).
properties:
record_type:
type: string
enum:
- voice_design
description: Identifies the resource type.
id:
type: string
format: uuid
description: Unique identifier for the voice design.
name:
type: string
description: Name of the voice design.
created_at:
type: string
format: date-time
description: Timestamp when the voice design was first created.
updated_at:
type: string
format: date-time
description: Timestamp when the voice design was last updated.
provider:
type:
- string
- 'null'
enum:
- telnyx
- minimax
- Telnyx
- Minimax
- null
description: Voice synthesis provider used for this design.
provider_supported_models:
type: array
items:
type: string
description: List of TTS model identifiers supported by this design's provider.
VoiceDesignUpdateRequest:
type: object
description: Request body for renaming a voice design.
required:
- name
properties:
name:
type: string
minLength: 1
maxLength: 255
description: New name for the voice design.
example:
name: updated-narrator
VoiceDesignUpdatedResponse:
type: object
description: Response envelope for a voice design after a rename operation (no version-specific fields).
properties:
data:
$ref: '#/components/schemas/VoiceDesignSummaryData'
example:
data:
record_type: voice_design
id: 550e8400-e29b-41d4-a716-446655440000
name: updated-narrator
created_at: '2024-01-01T00:00:00Z'
updated_at: '2024-01-02T00:00:00Z'
VoiceSdkCallReport:
type: object
description: A raw call report stats JSON payload. The schema is intentionally permissive because Voice SDK clients
can add fields over time.
properties:
call_id:
type: string
format: uuid
description: Unique call identifier.
call_report_id:
type: string
description: User-scoped storage grouping identifier derived from the authenticated user. This is not a unique per-call
report identifier and may be shared by multiple calls for the same user.
user_id:
type: string
format: uuid
description: Authenticated user that owns the call report.
organization_id:
type: string
format: uuid
description: Organization associated with the stored call report when provided by the Voice SDK reporting path.
voice_sdk_id:
type: string
description: Voice SDK instance identifier.
voice_sdk_session_id:
type: string
description: Voice SDK session correlation identifier used to group stats segments for the same SDK session.
voice_sdk_id_decoded:
type: object
additionalProperties: true
description: Decoded Voice SDK identifier metadata emitted by voice-sdk-proxy when available.
user_agent:
type: string
description: Voice SDK user agent string reported by the client. This is the preferred SDK/platform/version dimension
when present.
version:
type: string
description: Legacy SDK version value when the client reports one separately from the user agent.
telnyx_session_id:
type: string
description: Telnyx RTC session identifier for correlating the report with Voice SDK signaling and media-session
logs.
telnyx_leg_id:
type: string
description: Telnyx call leg identifier for correlating the report with call-control, SIP, and media troubleshooting
data.
summary:
type: object
additionalProperties: true
description: High-level call metadata.
stats:
$ref: '#/components/schemas/VoiceSdkCallReportStats'
logs:
$ref: '#/components/schemas/VoiceSdkCallReportLogs'
flushReason:
type: object
additionalProperties: true
description: Reason the SDK flushed this stats report segment, for example an intermediate socket-close flush.
segment:
type: integer
description: Zero-based stats segment index when the SDK sends segmented or intermediate reports.
stored_at:
type: string
format: date-time
description: Time when the call report was stored.
created_at:
type: string
format: date-time
description: Creation timestamp when present.
additionalProperties: true
VoiceSdkCallReportListResponse:
type: object
description: Paginated raw Voice SDK call report stats payloads as stored by voice-sdk-debug.
properties:
data:
type: array
items:
$ref: '#/components/schemas/VoiceSdkCallReport'
meta:
$ref: '#/components/schemas/voice-sdk-debug_PaginationMeta'
required:
- data
- meta
VoiceSdkCallReportLogEntry:
type: object
description: A raw Voice SDK log entry. Additional SDK-specific fields may be present.
properties:
timestamp:
type: string
format: date-time
description: Time when the log entry was emitted.
level:
type: string
description: Log level emitted by the SDK.
enum:
- debug
- info
- warn
- error
message:
type: string
description: Log message.
context:
type: object
additionalProperties: true
description: Raw structured context attached to the log entry.
additionalProperties: true
VoiceSdkCallReportLogs:
description: Raw logs payload emitted by the Voice SDK and stored without normalization. Live responses commonly return
an array of log entries, but object-shaped log payloads are also allowed for compatibility.
oneOf:
- type: array
description: Raw log entries emitted by the Voice SDK.
items:
$ref: '#/components/schemas/VoiceSdkCallReportLogEntry'
- type: object
description: Raw logs object emitted by the Voice SDK when logs are grouped under an entries field.
properties:
entries:
type: array
description: Raw log entries when the SDK groups logs under an entries field.
items:
$ref: '#/components/schemas/VoiceSdkCallReportLogEntry'
additionalProperties: true
VoiceSdkCallReportStats:
description: Raw stats payload emitted by the Voice SDK and stored without normalization. The exact shape can vary by
SDK platform and version. Live responses commonly return an array of interval snapshots, but object-shaped stats payloads
are also allowed for compatibility.
oneOf:
- type: array
description: Raw interval stats snapshots emitted by the Voice SDK.
items:
type: object
additionalProperties: true
description: Raw stats snapshot. It may include WebRTC RTCStatsReport-style entries and audio, connection, ICE,
or transport metrics.
- type: object
description: Raw stats object emitted by the Voice SDK.
properties:
audio:
type: object
additionalProperties: true
description: Raw audio stats such as inbound/outbound packet, byte, jitter, packet-loss, bitrate, and audio-level
metrics.
connection:
type: object
additionalProperties: true
description: Raw connection stats such as round-trip time, packets, and bytes sent or received.
ice:
type: object
additionalProperties: true
description: Raw ICE candidate-pair information, including selected pair, local/remote candidates, state, and
nomination data when provided by the SDK.
transport:
type: object
additionalProperties: true
description: Raw transport stats such as ICE state, DTLS state, SRTP cipher, TLS version, and selected-candidate-pair
changes.
additionalProperties: true
VoiceSdkCallReportV2Error:
type: object
description: Standard Telnyx API v2 error object.
properties:
code:
type: string
description: Telnyx error code.
example: '10015'
title:
type: string
description: Short, human-readable error title.
example: Bad Request
detail:
type: string
description: Human-readable details about the error.
example: 'Missing required query parameter: call_id.'
source:
type: object
description: Reference to the request field that caused the error.
properties:
parameter:
type: string
description: Query parameter that caused the error.
example: call_id
pointer:
type: string
description: JSON pointer to the request body field that caused the error.
additionalProperties: true
meta:
type: object
description: Additional error metadata.
additionalProperties: true
properties:
url:
type: string
format: uri
description: Link to error documentation.
example: https://developers.telnyx.com/docs/overview/errors/10015
required:
- code
- title
- detail
additionalProperties: true
VoiceSdkCallReportV2ErrorResponse:
type: object
description: Standard Telnyx API v2 error response envelope.
properties:
errors:
type: array
items:
$ref: '#/components/schemas/VoiceSdkCallReportV2Error'
required:
- errors
additionalProperties: true
VoiceSdkCallReportsResponse:
type: array
description: Raw Voice SDK call report stats payloads as stored by voice-sdk-debug.
items:
$ref: '#/components/schemas/VoiceSdkCallReport'
VoiceSettings:
properties:
voice:
type: string
description: 'The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices)
via our voices API.
To use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref`
field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
for details. For Telnyx voices, use `Telnyx..` (e.g. Telnyx.KokoroTTS.af_heart).
The voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic
variables webhook, allowing you to select the voice dynamically per call.'
voice_speed:
type: number
default: 1
description: The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice
faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected
by the synthesis engine.
api_key_ref:
type: string
description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.'
temperature:
type: number
default: 0.5
description: Determines how stable the voice is and the randomness between each generation. Lower values create
a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using
ElevenLabs.
similarity_boost:
type: number
default: 0.75
description: Determines how closely the AI should adhere to the original voice when attempting to replicate it.
Only applicable when using ElevenLabs.
use_speaker_boost:
type: boolean
default: true
description: Amplifies similarity to the original speaker voice. Increases computational load and latency slightly.
Only applicable when using ElevenLabs.
style:
type: number
default: 0
description: Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources
when set above 0. Only applicable when using ElevenLabs.
speed:
type: number
default: 1.0
description: Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than
1.0 accelerate it. Only applicable when using ElevenLabs.
language_boost:
type:
- string
- 'null'
description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null
(no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.
enum:
- null
- auto
- Chinese
- Chinese,Yue
- English
- Arabic
- Russian
- Spanish
- French
- Portuguese
- German
- Turkish
- Dutch
- Ukrainian
- Vietnamese
- Indonesian
- Japanese
- Italian
- Korean
- Thai
- Polish
- Romanian
- Greek
- Czech
- Finnish
- Hindi
- Bulgarian
- Danish
- Hebrew
- Malay
- Persian
- Slovak
- Swedish
- Croatian
- Filipino
- Hungarian
- Norwegian
- Slovenian
- Catalan
- Nynorsk
- Tamil
- Afrikaans
default: null
expressive_mode:
type: boolean
default: false
description: Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio
tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.
background_audio:
description: Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL.
If a media URL is chosen in the portal, customers can preview it before saving.
oneOf:
- type: object
properties:
type:
type: string
enum:
- predefined_media
description: Select from predefined media options.
value:
type: string
enum:
- silence
- office
default: silence
description: The predefined media to use. `silence` disables background audio.
volume:
type: number
minimum: 0.1
maximum: 1.0
multipleOf: 0.1
default: 1.0
description: Volume level for the predefined background audio. Supports values from 0.1 to 1.0 in 0.1 increments.
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- media_url
description: Provide a direct URL to an MP3 file. The audio will loop during the call.
value:
type: string
format: uri
description: HTTPS URL to an MP3 file.
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- media_name
description: Reference a previously uploaded media by its name from Telnyx Media Storage.
value:
type: string
description: The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage).
The audio will loop during the call.
required:
- type
- value
type: object
required:
- voice
VoicemailPrefResponse:
type: object
example:
enabled: true
pin: '1234'
greeting:
mode: custom_greeting
media_name: my_voicemail_greeting
properties:
enabled:
type: boolean
example: true
description: Whether voicemail is enabled.
pin:
type: string
example: '1234'
description: The pin used for the voicemail.
greeting:
type: object
description: Controls the greeting a caller hears before leaving a voicemail. Set `mode` to `default` to play the
standard system greeting, or to `custom_greeting` to play your own audio. When `mode` is `custom_greeting`, `media_name`
is required and must reference an audio file already uploaded to your account through the Media Storage API.
properties:
mode:
type: string
enum:
- default
- custom_greeting
default: default
example: custom_greeting
description: The greeting mode. `default` plays the standard system greeting. `custom_greeting` plays the audio
referenced by `media_name`.
media_name:
type:
- string
- 'null'
example: my_voicemail_greeting
description: The name of the media file to play as the greeting. Required when `mode` is `custom_greeting`;
ignored when `mode` is `default`. The value must match the `media_name` of a file you previously uploaded
with the Media Storage API (`POST /v2/media`).
VoicemailRequest:
type: object
properties:
pin:
type: string
example: '1234'
description: The pin used for voicemail
enabled:
type: boolean
example: true
description: Whether voicemail is enabled.
greeting:
type: object
description: Controls the greeting a caller hears before leaving a voicemail. Set `mode` to `default` to play the
standard system greeting, or to `custom_greeting` to play your own audio. When `mode` is `custom_greeting`, `media_name`
is required and must reference an audio file already uploaded to your account through the Media Storage API.
properties:
mode:
type: string
enum:
- default
- custom_greeting
default: default
example: custom_greeting
description: The greeting mode. `default` plays the standard system greeting. `custom_greeting` plays the audio
referenced by `media_name`.
media_name:
type:
- string
- 'null'
example: my_voicemail_greeting
description: The name of the media file to play as the greeting. Required when `mode` is `custom_greeting`;
ignored when `mode` is `default`. The value must match the `media_name` of a file you previously uploaded
with the Media Storage API (`POST /v2/media`).
example:
enabled: true
pin: '1234'
greeting:
mode: custom_greeting
media_name: my_voicemail_greeting
VoicesResponse:
type: object
description: List of available voices.
properties:
voices:
type: array
items:
$ref: '#/components/schemas/Voice'
Volume:
title: Volume
enum:
- '10'
- '100'
- 1,000
- 10,000
- 100,000
- 250,000
- 500,000
- 750,000
- 1,000,000
- 5,000,000
- 10,000,000+
type: string
description: Message Volume Enums
WabaResponse:
type: object
properties:
id:
type: string
format: uuid
description: Internal ID of Whatsapp business account
record_type:
type: string
example: whatsapp_business_account
name:
type: string
description: Name of Whatsapp business account
waba_id:
type: string
description: WABA ID of Whatsapp business account
status:
type: string
description: Status of Whatsapp business account
phone_numbers_count:
type: integer
description: Count of phone numbers associated with Whatsapp business account
business_verification_status:
type: string
description: Business verification status of Whatsapp business account
account_review_status:
type: string
description: Account review status of Whatsapp business account
country:
type: string
description: Country associated with Whatsapp business account
created_at:
type: string
format: date-time
WabaSettings:
type: object
properties:
id:
type: string
format: uuid
description: Internal ID of Whatsapp business account
record_type:
type: string
example: whatsapp_business_account_settings
name:
type: string
timezone:
type: string
example: America/Chicago
webhook_url:
type: string
format: url
description: URL to receive Whatsapp events
webhook_failover_url:
type: string
format: url
description: Failover URL to receive Whatsapp events
webhook_enabled:
type: boolean
description: Enable/disable receiving Whatsapp events
webhook_events:
type: array
items:
type: string
description: Whatsapp event to subscribe to
updated_at:
type: string
format: date-time
WaitForAction:
type: object
description: Wait for a condition before continuing.
required:
- type
- condition
properties:
type:
const: wait_for
condition:
oneOf:
- type: object
required:
- kind
- pattern
properties:
kind:
const: url_pattern
pattern:
type: string
minLength: 1
maxLength: 1024
additionalProperties: false
- type: object
required:
- kind
- observation_id
- ref
properties:
kind:
const: ref
observation_id:
type: string
minLength: 1
ref:
type: string
minLength: 1
additionalProperties: false
- type: object
required:
- kind
- text
properties:
kind:
const: text
text:
type: string
minLength: 1
maxLength: 1024
additionalProperties: false
- type: object
required:
- kind
properties:
kind:
const: dom_stable
additionalProperties: false
timeout_ms:
type: integer
minimum: 100
maximum: 15000
default: 5000
include_observation:
type: boolean
default: false
idempotency_key:
type: string
minLength: 1
maxLength: 255
additionalProperties: false
WdrReport:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
readOnly: true
example: detail_records_report
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
start_time:
description: ISO 8601 formatted date-time indicating the start time.
type: string
example: '2018-02-02T22:25:27.521Z'
end_time:
description: ISO 8601 formatted date-time indicating the end time.
type: string
example: '2018-02-02T22:25:27.521Z'
status:
description: Indicates the status of the report, which is updated asynchronously.
type: string
enum:
- pending
- complete
- failed
- deleted
example: pending
report_url:
description: The URL where the report content, when generated, will be published to.
type: string
example: http://example.com
WdrReportRequest:
type: object
properties:
start_time:
description: ISO 8601 formatted date-time indicating the start time.
type: string
example: '2018-02-02T22:25:27.521Z'
end_time:
description: ISO 8601 formatted date-time indicating the end time.
type: string
example: '2018-02-02T22:25:27.521Z'
example:
start_time: '2018-02-02T22:25:27.521Z'
end_time: '2018-02-02T22:25:27.521Z'
WebSearchError:
type: object
properties:
error:
type: object
required:
- message
properties:
message:
type: string
description: Human-readable error message.
details:
type: object
additionalProperties: true
description: Additional error details (e.g. validation field errors).
WebSearchRequest:
type: object
required:
- query
properties:
query:
type: string
minLength: 1
maxLength: 2000
description: The search query text.
example: latest AI agent frameworks
count:
type: integer
minimum: 1
maximum: 100
description: Number of results to return (1-100).
example: 10
country:
type: string
minLength: 2
maxLength: 2
description: Two-letter country code (ISO 3166-1 alpha-2) to bias results.
example: US
safesearch:
type: string
enum:
- 'off'
- moderate
- strict
description: Safe search filter level.
example: moderate
freshness:
type: string
maxLength: 20
description: 'Time-based filter for results. Common values: `day`, `week`, `month`, `year`.'
example: week
include_domains:
type: array
items:
type: string
maxItems: 50
description: Restrict results to these domains (bare hostnames, e.g. `arxiv.org`).
example:
- arxiv.org
- github.com
exclude_domains:
type: array
items:
type: string
maxItems: 50
description: Exclude results from these domains (bare hostnames, e.g. `pinterest.com`).
example:
- pinterest.com
livecrawl:
type: boolean
description: When true, the provider crawls pages in real-time for fresh content. The boolean is translated to the
provider's internal enum internally; callers always pass `true` or `false`.
example: false
WebSearchResponse:
type: object
properties:
results:
type: object
required:
- web
properties:
web:
type: array
items:
$ref: '#/components/schemas/WebSearchResult'
description: Web search results.
news:
type: array
items:
$ref: '#/components/schemas/WebSearchResult'
description: News search results. Present only when the query surfaces news results.
WebSearchResult:
type: object
required:
- url
- title
- description
- snippets
properties:
url:
type: string
format: uri
description: Result URL.
title:
type: string
description: Result title.
description:
type: string
description: Short description or excerpt.
snippets:
type: array
items:
type: string
description: Relevant text snippets from the page.
thumbnail_url:
type: string
format: uri
description: Thumbnail image URL (if available).
favicon_url:
type: string
format: uri
description: Favicon URL (if available).
WebhookApiVersion:
title: Webhook API Version
description: Determines which webhook format will be used, Telnyx API v1 or v2.
type: string
enum:
- '1'
- '2'
default: '1'
example: '1'
WebhookEventFailoverUrl:
title: Webhook Event Failover URL
description: The failover URL where webhooks related to this connection will be sent if sending to the primary URL fails.
Must include a scheme, such as 'https'.
type:
- string
- 'null'
format: uri
default: ''
example: https://failover.example.com
WebhookEventUrl:
title: Webhook Event URL
description: The URL where webhooks related to this connection will be sent. Must include a scheme, such as 'https'.
type: string
format: uri
example: https://example.com
WebhookPortoutFocDateChanged:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- portout.status_changed
- portout.foc_date_changed
- portout.new_comment
example: portout.status_changed
portout_id:
type: string
format: uuid
description: Identifies the port-out order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the portout.foc_date_changed event
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the port-out order that have the FOC date changed.
user_id:
type: string
description: Identifies the organization that port-out order belongs to.
example: 0e19c89e-f0ce-458a-a36c-3c60bc2014b1
foc_date:
type: string
description: ISO 8601 formatted date indicating the new FOC date.
example: '2021-03-19T10:07:15.527Z'
format: date-time
record_type:
type: string
example: portout_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
WebhookPortoutNewComment:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- portout.status_changed
- portout.foc_date_changed
- portout.new_comment
example: portout.status_changed
portout_id:
type: string
format: uuid
description: Identifies the port-out order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the portout.new_comment event
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the comment that was added to the port-out order.
portout_id:
type: string
format: uuid
example: d26109e5-0605-4671-a235-d3c649cc8406
description: Identifies the port-out order that the comment was added to.
user_id:
type: string
format: uuid
example: 1c45c968-c2e0-4559-b1dd-db073962fc61
description: Identifies the user that added the comment.
comment:
type: string
description: The body of the comment.
example: This is a comment.
record_type:
type: string
example: portout_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
WebhookPortoutStatusChanged:
type: object
properties:
id:
type: string
description: Uniquely identifies the event.
format: uuid
example: eef3340b-8903-4466-b445-89b697315a3a
event_type:
type: string
description: Identifies the event type
enum:
- portout.status_changed
- portout.foc_date_changed
- portout.new_comment
example: portout.status_changed
portout_id:
type: string
format: uuid
description: Identifies the port-out order associated with the event.
example: 9471c873-e3eb-4ca1-957d-f9a451334d52
available_notification_methods:
type: array
items:
type: string
enum:
- email
- webhook
description: Indicates the notification methods used.
payload_status:
type: string
description: The status of the payload generation.
enum:
- created
- completed
example: created
payload:
type: object
description: The webhook payload for the portout.status_changed event
properties:
id:
type: string
format: uuid
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
description: Identifies the port out that was moved.
status:
type: string
description: The new status of the port out.
enum:
- pending
- authorized
- ported
- rejected
- rejected-pending
- canceled
example: authorized
phone_numbers:
type: array
description: Phone numbers associated with this port-out order
items:
type: string
description: E164 formatted phone number
example:
- '+35312345678'
carrier_name:
type: string
description: Carrier the number will be ported out to
example: Testing Carrier
spid:
type: string
description: The new carrier SPID.
example: 987H
user_id:
type: string
format: uuid
description: Identifies the user that the port-out order belongs to.
example: 96dfa9e4-c753-4fd3-97cd-42d66f26cf0c
subscriber_name:
type: string
description: The name of the port-out's end user.
example: John Doe
rejection_reason:
type:
- string
- 'null'
description: The reason why the order is being rejected by the user. If the order is authorized, this field
can be left null
example: null
attempted_pin:
type: string
description: The PIN that was attempted to be used to authorize the port out.
example: '1234'
record_type:
type: string
example: portout_event
description: Identifies the type of the resource.
readOnly: true
created_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
example: '2021-03-19T10:07:15.527000Z'
updated_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2021-03-19T10:07:15.527000Z'
WebhookTimeoutSecs:
title: Webhook Timeout Secs
type:
- integer
- 'null'
description: Specifies how many seconds to wait before timing out a webhook.
minimum: 0
maximum: 30
default: null
example: 25
WebhookTool:
properties:
type:
type: string
enum:
- webhook
timeout_ms:
type: integer
default: 5000
maximum: 60000
description: The maximum number of milliseconds to wait for the webhook to respond before the tool call is aborted.
Set this at the tool level, as a sibling of `type` — a `timeout_ms` nested inside the `webhook` object is not
applied, and the tool runs at this default instead.
webhook:
$ref: '#/components/schemas/CallControlWebhookToolParams'
type: object
required:
- type
- webhook
title: WebhookTool
WebhookToolParams:
properties:
name:
type: string
description: The name of the tool.
description:
type: string
description: The description of the tool.
url:
description: 'The URL of the external tool to be called. This URL is going to be used by the assistant. The URL
can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will
be provided by the assistant if `path_parameters` are provided with the `id` attribute.'
type: string
example: https://example.com/api/v1/function
method:
description: The HTTP method to be used when calling the external tool.
type: string
enum:
- GET
- POST
- PUT
- DELETE
- PATCH
default: POST
headers:
description: The headers to be sent to the external tool.
type: array
items:
type: object
properties:
name:
type: string
value:
description: The value of the header. Note that we support mustache templating for the value. For example
you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the
integration secret as the bearer token. [Telnyx signature headers](https://developers.telnyx.com/docs/voice/programmable-voice/voice-api-webhooks)
will be automatically added to the request.
type: string
body_parameters:
description: The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will
be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema)
for documentation about the format
type: object
properties:
properties:
description: The properties of the body parameters.
type: object
additionalProperties: true
required:
description: The required properties of the body parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
age:
description: The age of the customer.
type: integer
location:
description: The location of the customer.
type: string
required:
- age
- location
type: object
path_parameters:
description: The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will
be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON
Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format
type: object
properties:
properties:
description: The properties of the path parameters.
type: object
additionalProperties: true
required:
description: The required properties of the path parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
id:
description: The id of the customer.
type: string
required:
- id
type: object
query_parameters:
description: The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters
will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema)
for documentation about the format
type: object
properties:
properties:
description: The properties of the query parameters.
type: object
additionalProperties: true
required:
description: The required properties of the query parameters.
type: array
items:
type: string
type:
type: string
enum:
- object
example:
properties:
page:
description: The page number.
type: integer
required:
- page
type: object
preset_body_fields:
type: object
additionalProperties: true
description: Body fields supplied by the assistant configuration rather than by the model. They are never advertised
in the tool definition, so the LLM can neither see nor set them, and they take precedence over a `body_parameters`
value of the same name. Values support mustache templating, so they can hold dynamic variables (`{{customer_id}}`)
and integration secrets (`{{#integration_secret}}my-secret{{/integration_secret}}`). Not sent on `GET` requests,
which carry no body.
example:
account_id: '{{customer_id}}'
source: telnyx-assistant
preset_query_params:
type: object
additionalProperties: true
description: Query string parameters supplied by the assistant configuration rather than by the model. They are
never advertised in the tool definition, so the LLM can neither see nor set them, and they take precedence over
a `query_parameters` value of the same name. Values support mustache templating, so they can hold dynamic variables
(`{{telnyx_end_user_target}}`) and integration secrets (`{{#integration_secret}}my-secret{{/integration_secret}}`).
Unlike values templated directly into the `url`, these are percent-encoded, so a value such as `+15551234567`
survives the round trip.
example:
caller: '{{telnyx_end_user_target}}'
channel: voice
async:
type: boolean
default: false
description: If async, the assistant will move forward without waiting for your server to respond.
async_timeout_ms:
type: integer
minimum: 1
maximum: 15000
description: Maximum time in milliseconds that the conversation worker waits for an async webhook response before
returning "Submitted" to the LLM. If unset, the platform default (currently 300ms) is used.
store_fields_as_variables:
type: array
description: A list of mappings that extract values from the webhook response and store them as dynamic variables.
Each mapping specifies a dynamic variable name and a dot-notation path to the value in the response body.
items:
type: object
required:
- name
- value_path
properties:
name:
type: string
minLength: 1
description: The name of the dynamic variable to store the extracted value in.
value_path:
type: string
minLength: 1
description: A dot-notation path to the value in the webhook response body (e.g. 'customer.name' or 'id').
additionalProperties: false
messages:
type: array
description: Filler messages spoken while a synchronous webhook request is in progress. `request_start` messages
are spoken immediately when the request begins. `request_response_delayed` messages are spoken after `timing_ms`
has elapsed only if the webhook response is still pending. Filler messages are not used for asynchronous webhooks.
items:
oneOf:
- title: WebhookToolRequestStartMessage
type: object
required:
- type
- content
properties:
type:
type: string
const: request_start
description: Speak the filler message immediately when the webhook request begins.
content:
type: string
minLength: 1
description: The text the assistant speaks.
timing_ms:
type: integer
minimum: 100
maximum: 120000
description: An optional delay value. This value is ignored for `request_start` messages.
additionalProperties: false
- title: WebhookToolRequestResponseDelayedMessage
type: object
required:
- type
- content
- timing_ms
properties:
type:
type: string
const: request_response_delayed
description: Speak the filler message after the configured delay if the webhook response is still pending.
content:
type: string
minLength: 1
description: The text the assistant speaks.
timing_ms:
type: integer
minimum: 100
maximum: 120000
description: The delay in milliseconds from the start of the webhook request.
additionalProperties: false
example:
- type: request_start
content: Let me look that up for you.
- type: request_response_delayed
content: Still working on that.
timing_ms: 5000
type: object
required:
- url
- name
- description
title: WebhookToolParams
WebsocketSettings:
type: object
title: WebsocketSettings
description: 'Streams conversation and telephony events to a WebSocket server you host, and accepts messages injected
back into the conversation. Telnyx opens the connection as a client, once per conversation. Delivery is best effort
throughout: while the connection is down events are dropped rather than queued, and no socket failure is ever allowed
to affect the call. Beta feature.'
properties:
enabled:
type: boolean
default: false
description: Whether Telnyx opens a WebSocket to `url` for each of this assistant's conversations. Defaults to `false`.
url:
type: string
description: The `ws://` or `wss://` endpoint Telnyx connects to. Required when `enabled` is `true`. Must be externally
reachable — localhost, private IP ranges and `.local` domains are rejected.
auth_ref:
type: string
description: 'Integration secret identifier whose value Telnyx sends as an `Authorization: Bearer ` header
on the upgrade request. Resolved on every connection attempt, so a rotated secret is picked up by the next reconnect.'
WhatsappAccountUpdate:
type: object
required:
- record_type
- id
- event_type
- occurred_at
- payload
properties:
record_type:
type: string
enum:
- event
id:
type: string
format: uuid
event_type:
type: string
enum:
- whatsapp.account.update
occurred_at:
type: string
format: date-time
payload:
$ref: '#/components/schemas/WhatsappAccountUpdatePayload'
WhatsappAccountUpdateEvent:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/WhatsappAccountUpdate'
WhatsappAccountUpdatePayload:
type: object
required:
- record_type
- waba_id
- event
properties:
record_type:
type: string
enum:
- whatsapp_account
waba_id:
type: string
description: Meta WhatsApp Business Account identifier.
event:
type: string
examples:
- ACCOUNT_OFFBOARDED
- ACCOUNT_RECONNECTED
- PARTNER_REMOVED
description: Account event reported by Meta. Coexistence lifecycle values include `ACCOUNT_OFFBOARDED`, `ACCOUNT_RECONNECTED`,
and `PARTNER_REMOVED`. Preserve unknown values for forward compatibility.
WhatsappCallingRoutingData:
type: object
properties:
record_type:
type: string
enum:
- whatsapp_calling_routing
description: Identifies the type of the resource.
example: whatsapp_calling_routing
phone_number:
type: string
description: Phone number in E.164 format, with a leading `+`.
example: '+13125550100'
connection_id:
type:
- string
- 'null'
description: ID of the routing connection, or `null` when none is set.
example: '1234567890'
required:
- record_type
- phone_number
- connection_id
WhatsappCallingRoutingFieldErrors:
type: object
properties:
errors:
type: object
description: Error messages keyed by the field or step that failed.
additionalProperties:
type: array
items:
type: string
required:
- errors
WhatsappCallingSettingsData:
type: object
properties:
record_type:
type: string
example: whatsapp_calling_settings
phone_number:
type: string
description: Phone number in E164 format
updated_at:
type: string
format: date-time
enabled:
type: boolean
description: True if calling is enabled on the phone
WhatsappContact:
type: object
properties:
addresses:
type: array
items:
type: object
properties:
street:
type: string
city:
type: string
state:
type: string
zip:
type: string
country:
type: string
country_code:
type: string
type:
type: string
birthday:
type: string
emails:
type: array
items:
type: object
properties:
email:
type: string
type:
type: string
name:
type: string
org:
type: object
properties:
company:
type: string
department:
type: string
title:
type: string
phones:
type: array
items:
type: object
properties:
phone:
type: string
x-format: E+164
type:
type: string
wa_id:
type: string
urls:
type: array
items:
type: object
properties:
url:
type: string
format: url
type:
type: string
WhatsappConversationWindowData:
type: object
properties:
window_active:
type: boolean
description: Whether the 24-hour conversation window is currently open
example: true
window_expires_at:
type:
- string
- 'null'
format: date-time
description: When the window closes. Null if no active window.
example: '2026-06-30T16:00:00Z'
last_user_message_at:
type: string
format: date-time
description: Timestamp of the last inbound message that opened the window
example: '2026-06-29T15:53:00Z'
window_type:
type: string
description: Window type. Currently always 24h when present.
example: 24h
WhatsappConversationalComponent:
type: object
properties:
record_type:
type: string
example: whatsapp_conversational_component
phone_number:
type: string
description: Phone number in E164 format
ice_breakers:
type: array
description: List of ice breakers
items:
type: string
commands:
type: array
description: List of commands
items:
type: object
properties:
command:
type: string
description:
type: string
WhatsappCreateTemplateRequest:
type: object
required:
- waba_id
- name
- category
- language
- components
properties:
waba_id:
type: string
description: The WhatsApp Business Account ID.
name:
type: string
description: Template name. Lowercase letters, numbers, and underscores only.
category:
type: string
enum:
- MARKETING
- UTILITY
- AUTHENTICATION
description: 'Template category: AUTHENTICATION, UTILITY, or MARKETING.'
language:
type: string
description: Template language code (e.g. en_US, es, pt_BR).
components:
type: array
description: Template components defining message structure. Passed through to Meta Graph API. Templates with variables
must include example values. Supports HEADER, BODY, FOOTER, BUTTONS, CAROUSEL and any future Meta component types.
items:
oneOf:
- $ref: '#/components/schemas/WhatsappTemplateHeaderComponent'
- $ref: '#/components/schemas/WhatsappTemplateBodyComponent'
- $ref: '#/components/schemas/WhatsappTemplateFooterComponent'
- $ref: '#/components/schemas/WhatsappTemplateButtonsComponent'
- $ref: '#/components/schemas/WhatsappTemplateCarouselComponent'
description: A template component. Additional Meta component types not listed here are also accepted.
WhatsappHostedSignup:
type: object
properties:
id:
type: string
description: Hosted signup ID
example: 0192345a-7b8c-7d9e-0f12-3456789abcde
record_type:
type: string
enum:
- whatsapp_jwt
example: whatsapp_jwt
app_id:
type: string
description: Meta App ID the hosted signup onboards customers into
example: '123456789012345'
solution_id:
type: string
description: Meta Partner Solution ID linked to the app. Returned only when creating a hosted signup.
example: '987654321098765'
created_at:
type: string
format: date-time
example: '2026-07-08T12:00:00Z'
expires_at:
type: string
format: date-time
description: When the onboarding URL stops working
example: '2026-07-09T12:00:00Z'
jwt:
type: string
description: Signed token embedded in `url`
example: eyJhbGciOiJSUzI1NiIs...
url:
type: string
format: uri
description: Hosted onboarding URL to share with the end customer
example: https://acct.fyi?token=eyJhbGciOiJSUzI1NiIs...
WhatsappHostedSignupCreateRequest:
type: object
required:
- app_id
properties:
app_id:
type: string
description: Meta App ID linked to the Telnyx account or its manager account. The app must be enabled.
example: '123456789012345'
expires_at:
type: string
format: date-time
description: When the onboarding URL expires, in RFC 3339 format. Must be in the future and at most 3 days ahead.
Defaults to 24 hours after creation.
example: '2026-07-09T12:00:00Z'
signup_type:
type: string
enum:
- standard
- coexistence
default: standard
description: Onboarding flow the hosted page launches. Use `coexistence` for a number that remains active in the
WhatsApp Business app.
example: coexistence
WhatsappInteractive:
type: object
properties:
type:
type: string
enum:
- cta_url
- list
- carousel
- button
- location_request_message
action:
type: object
properties:
name:
type: string
button:
type: string
buttons:
type: array
items:
type: object
properties:
type:
type: string
enum:
- reply
reply:
type: object
properties:
title:
type: string
description: button label, 20 character maximum
id:
type: string
description: unique identifier for each button, 256 character maximum
catalog_id:
type: string
product_retailer_id:
type: string
sections:
type: array
items:
type: object
properties:
product_items:
type: array
items:
type: object
properties:
product_retailer_id:
type: string
rows:
type: array
items:
type: object
properties:
id:
type: string
description: arbitrary string identifying the row, 200 character maximum
title:
type: string
description: row title, 24 character maximum
description:
type: string
description: row description, 72 character maximum
title:
type: string
description: section title, 24 character maximum
mode:
type: string
parameters:
type: object
properties:
display_text:
type: string
description: button label text, 20 character maximum
url:
type: string
format: url
description: button URL to load when tapped by the user
cards:
type: array
items:
type: object
properties:
card_index:
type: integer
description: unique index for each card (0-9)
type:
type: string
enum:
- cta_url
header:
type: object
properties:
type:
type: string
enum:
- image
- video
image:
$ref: '#/components/schemas/WhatsappMedia'
video:
$ref: '#/components/schemas/WhatsappMedia'
body:
type: object
properties:
text:
type: string
description: 160 character maximum, up to 2 line breaks
action:
type: object
properties:
product_retailer_id:
type: string
description: the unique retailer ID of the product
catalog_id:
type: string
description: the unique ID of the catalog
body:
type: object
properties:
text:
type: string
description: body text, 1024 character maximum
footer:
type: object
properties:
text:
type: string
description: footer text, 60 character maximum
header:
type: object
properties:
document:
$ref: '#/components/schemas/WhatsappMedia'
image:
$ref: '#/components/schemas/WhatsappMedia'
video:
$ref: '#/components/schemas/WhatsappMedia'
text:
type: string
description: header text, 60 character maximum
sub_text:
type: string
WhatsappLocation:
type: object
properties:
latitude:
type: string
longitude:
type: string
name:
type: string
address:
type: string
WhatsappMedia:
type: object
properties:
link:
type: string
description: media URL
format: url
example: http://example.com/media.jpg
caption:
type: string
description: media caption
filename:
type: string
description: file name with extension
voice:
type: boolean
description: true if voice message
WhatsappMessage:
required:
- from
- to
- whatsapp_message
type: object
properties:
from:
type: string
description: Phone number in +E.164 format associated with Whatsapp account
example: '+13125551234'
to:
type: string
description: Phone number in +E.164 format
example: '+13125551234'
whatsapp_message:
$ref: '#/components/schemas/WhatsappMessageContent'
type:
type: string
description: Message type - must be set to "WHATSAPP"
example: WHATSAPP
enum:
- WHATSAPP
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
messaging_profile_id:
description: Messaging profile ID - required if the 'from' number is not SMS-enabled
type: string
format: uuid
WhatsappMessageContent:
type: object
properties:
audio:
$ref: '#/components/schemas/WhatsappMedia'
document:
$ref: '#/components/schemas/WhatsappMedia'
image:
$ref: '#/components/schemas/WhatsappMedia'
sticker:
$ref: '#/components/schemas/WhatsappMedia'
video:
$ref: '#/components/schemas/WhatsappMedia'
interactive:
$ref: '#/components/schemas/WhatsappInteractive'
location:
$ref: '#/components/schemas/WhatsappLocation'
contacts:
type: array
items:
$ref: '#/components/schemas/WhatsappContact'
reaction:
$ref: '#/components/schemas/WhatsappReaction'
biz_opaque_callback_data:
type: string
description: custom data to return with status update
type:
type: string
enum:
- audio
- document
- image
- sticker
- video
- interactive
- location
- template
- reaction
- contacts
- text
text:
type: object
description: Text message content. Can only be sent within a 24-hour customer service window.
properties:
body:
type: string
description: The text message body.
example: Hello from Telnyx!
preview_url:
type: boolean
description: Whether to show a URL preview in the message.
default: false
required:
- body
template:
type: object
description: Template message object. Provide either template_id or name + language to identify the template.
properties:
template_id:
type: string
description: Telnyx template ID (the id field from template list/get responses). When provided, name and language
are resolved automatically.
example: 019cd44b-3a1c-781b-956e-bd33e9fd2ac6
name:
type: string
description: Template name as registered with Meta. Required unless template_id is provided.
example: order_confirmation
language:
type: object
description: Template language. Required unless template_id is provided.
properties:
policy:
type: string
example: deterministic
code:
type: string
description: Language code (e.g. en_US)
example: en_US
required:
- code
components:
type: array
description: Template parameter values for header, body, and button components.
items:
type: object
properties:
type:
type: string
enum:
- header
- body
- button
sub_type:
type: string
enum:
- quick_reply
- url
index:
type: integer
description: Button index (required for button components)
parameters:
type: array
items:
type: object
properties:
type:
type: string
enum:
- text
- image
- video
- document
- currency
- date_time
text:
type: string
WhatsappMessageEcho:
type: object
required:
- record_type
- id
- event_type
- occurred_at
- payload
properties:
record_type:
type: string
enum:
- event
id:
type: string
format: uuid
event_type:
type: string
enum:
- message.echo
occurred_at:
type: string
format: date-time
payload:
$ref: '#/components/schemas/WhatsappMessageEchoPayload'
WhatsappMessageEchoEvent:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/WhatsappMessageEcho'
WhatsappMessageEchoPayload:
type: object
required:
- record_type
- direction
- origin
- id
- type
- organization_id
- messaging_profile_id
- from
- to
- body
- cost
- errors
properties:
record_type:
type: string
enum:
- message
direction:
type: string
enum:
- outbound
description: Indicates that the business sent the message to the WhatsApp user.
origin:
type: string
enum:
- whatsapp_business_app
description: Identifies the WhatsApp Business app as the source of the message.
id:
type: string
format: uuid
description: Telnyx identifier for the mirrored message.
type:
type: string
enum:
- WHATSAPP
organization_id:
type: string
format: uuid
messaging_profile_id:
type: string
format: uuid
from:
type: object
required:
- phone_number
properties:
phone_number:
type: string
description: Coexistence-enabled business phone number in E.164 format.
x-format: address
carrier:
type: string
line_type:
type: string
to:
type: string
description: WhatsApp user who received the Business app message.
x-format: address
body:
type: object
description: Mirrored WhatsApp message content. The content property matches the value of `type`.
additionalProperties: true
required:
- id
- foreign_id
- timestamp
- type
properties:
from:
type: string
description: WhatsApp user who received the message.
from_user_id:
type: string
description: Opaque recipient identifier when Meta does not supply a phone number.
id:
type: string
format: uuid
description: Telnyx identifier for the mirrored message.
foreign_id:
type: string
description: Meta WhatsApp message identifier, also known as a wamid.
timestamp:
type: string
description: Unix timestamp supplied by Meta.
type:
type: string
description: WhatsApp message content type.
tags:
type: array
items:
type: string
cost:
type: object
description: No charge is created for a Business app message echo.
properties:
amount:
type:
- string
- 'null'
currency:
type:
- string
- 'null'
received_at:
type: string
format: date-time
webhook_url:
type:
- string
- 'null'
format: uri
webhook_failover_url:
type:
- string
- 'null'
format: uri
errors:
type: array
items:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
WhatsappPatchCallingRoutingRequest:
type: object
required:
- connection_id
properties:
connection_id:
type:
- string
- integer
- 'null'
description: 'ID of the connection to deliver inbound WhatsApp calls to: a positive integer up to 9223372036854775807,
sent as a decimal string or an integer. Send a string to keep large IDs exact. Non-null values are returned as
strings. `null` clears the routing.'
example: '1234567890'
WhatsappPatchCallingSettingsRequest:
type: object
required:
- enabled
properties:
enabled:
type: boolean
WhatsappPhoneNumberVerificationRequest:
type: object
required:
- phone_number
- display_name
properties:
phone_number:
type: string
display_name:
type: string
verification_method:
type: string
enum:
- sms
- voice
default: sms
language:
type: string
default: en_US
WhatsappPhoneResponse:
type: object
properties:
record_type:
type: string
example: whatsapp_business_phone_number
phone_number:
type: string
description: Phone number in E164 format
phone_number_id:
type: string
description: Whatsapp phone number ID
waba_id:
type: string
description: WABA ID of Whatsapp business account
user_id:
type: string
description: User ID
display_name:
type: string
quality_rating:
type: string
description: Whatsapp quality rating
status:
type: string
created_at:
type: string
format: date-time
enabled:
type: boolean
calling_enabled:
type: boolean
is_on_biz_app:
type: boolean
description: Indicates whether the number is connected to both the WhatsApp Business app and Cloud API through WhatsApp
Coexistence.
coexistence_state:
type:
- string
- 'null'
enum:
- pending_onboarding
- sync_pending
- syncing
- sync_complete
- active
- history_declined
- sync_deadline_expired
- offboarded
- disconnected
- null
description: Current lifecycle state for a coexistence number. This is null for a standard Cloud API number.
sync_deadline:
type:
- string
- 'null'
format: date-time
description: Deadline for initiating the current coexistence synchronization cycle. This is null when no deadline
applies.
sync_progress:
type:
- object
- 'null'
description: Synchronization progress. This object is returned only while a coexistence number is synchronizing.
properties:
contacts_status:
type: string
history_status:
type: string
history_phase:
type:
- integer
- 'null'
history_chunk_order:
type:
- integer
- 'null'
history_progress:
type:
- integer
- 'null'
minimum: 0
maximum: 100
WhatsappProfileData:
type: object
properties:
id:
type: string
record_type:
type: string
example: whatsapp_phone_number_profiles
phone_number_id:
type: string
description: Whatsapp phone number ID
display_name:
type: string
profile_photo_url:
type: string
category:
type: string
about:
type: string
maxLength: 139
description:
type: string
maxLength: 512
email:
type: string
website:
type: string
address:
type: string
profile_id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
WhatsappProfilePhotoData:
type: object
properties:
record_type:
type: string
example: whatsapp_phone_number_profile_photos
phone_number_id:
type: string
description: Meta phone number ID
profile_photo_url:
type: string
description: URL of the business profile photo (served by Meta's CDN). May be empty if no photo is set.
WhatsappProfilePhotoResponse:
type: object
properties:
data:
$ref: '#/components/schemas/WhatsappProfilePhotoData'
WhatsappReaction:
type: object
properties:
message_id:
type: string
emoji:
type: string
WhatsappResendVerificationRequest:
type: object
properties:
verification_method:
type: string
enum:
- sms
- voice
default: sms
WhatsappResponse:
type: object
properties:
data:
type: object
properties:
record_type:
type: string
example: message
direction:
type: string
example: outbound
id:
type: string
description: message ID
example: 4031938e-60e4-4235-a8dd-0b1c55a23e7a
type:
type: string
example: WHATSAPP
organization_id:
type: string
example: 9f61d8e1-7687-4d6d-9cae-9ff682985983
messaging_profile_id:
type: string
example: 4001781e-626f-4a41-a914-b1b682150f94
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
status:
type: string
enum:
- received
- delivered
carrier:
type: string
description: The carrier of the sender.
line_type:
type: string
description: The line-type of the sender.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
to:
$ref: '#/components/schemas/RCSTo'
body:
$ref: '#/components/schemas/WhatsappMessageContent'
encoding:
type: string
example: utf-8
received_at:
type: string
format: date-time
wait_seconds:
type:
- number
- 'null'
format: float
description: Seconds the message is queued due to rate limiting before being sent to the carrier. Represents
the maximum wait across all applicable rate limits (account, carrier, campaign). 0.0 = no queuing delay.
example: 0.5
WhatsappSignupSession:
type: object
properties:
record_type:
type: string
enum:
- whatsapp_session_id
session_id:
type: string
description: Signup session ID
user_id:
type: string
description: Telnyx user ID that owns the signup session
state:
type: string
enum:
- SUBSCRIBE_WEBHOOKS
- ASSIGNED_USERS
- SHARE_CREDIT_LINE
- REGISTER_PHONE_NUMBER
- ADD_WABA_TO_DB
- ADD_PHONE_NUMBERS_TO_DB
- COMPLETE
description: Current provisioning step, or the step that failed. `REGISTER_PHONE_NUMBER` is skipped for coexistence
signups.
status:
type: string
enum:
- INCOMPLETE
- PENDING
- SUCCESS
- FAILURE
description: '`INCOMPLETE` waits for the Meta signup code, `PENDING` is in progress, `SUCCESS` finished provisioning,
and `FAILURE` stopped at `state`.'
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
waba_id:
type: string
description: Meta WhatsApp Business Account ID
customer_id:
type: string
description: Tech provider customer reference submitted with the signup
errors:
type: array
items:
type: string
description: Errors recorded during provisioning
WhatsappTemplateBodyComponent:
type: object
description: The main text content of the message. Supports multiple variable parameters ({{1}}, {{2}}, etc.). Variables
cannot be at the start or end. Maximum 1024 characters.
required:
- type
properties:
type:
type: string
enum:
- BODY
text:
type: string
description: Body text content. Use {{1}}, {{2}}, etc. for variable placeholders. Required for MARKETING and UTILITY
templates. Optional for AUTHENTICATION templates where Meta provides the built-in OTP body.
maxLength: 1024
example:
type: object
description: Sample values for body variables. Required when body text contains parameters.
properties:
body_text:
type: array
description: Array containing one array of sample values, one per variable in order.
items:
type: array
items:
type: string
WhatsappTemplateButtonsComponent:
type: object
description: Optional interactive buttons. Maximum 3 buttons per template.
required:
- type
- buttons
properties:
type:
type: string
enum:
- BUTTONS
buttons:
type: array
items:
type: object
required:
- type
properties:
type:
type: string
enum:
- URL
- PHONE_NUMBER
- QUICK_REPLY
- OTP
- COPY_CODE
- FLOW
text:
type: string
maxLength: 25
description: Button label text. Maximum 25 characters. Required for URL, PHONE_NUMBER, and QUICK_REPLY buttons.
Not required for OTP buttons (Meta supplies the label).
url:
type: string
description: URL for URL-type buttons. Supports one variable ({{1}}).
phone_number:
type: string
description: Phone number in E.164 format.
otp_type:
type: string
enum:
- COPY_CODE
- ONE_TAP
example:
type: array
items:
type: string
description: Sample values for URL variable.
package_name:
type: string
description: Android package name. Required for ONE_TAP OTP buttons.
signature_hash:
type: string
description: Android app signing key hash. Required for ONE_TAP OTP buttons.
autofill_text:
type: string
description: Custom autofill button text for ONE_TAP OTP buttons.
zero_tap_terms_accepted:
type: boolean
description: Whether zero-tap terms have been accepted.
flow_id:
type: string
description: Flow ID for FLOW-type buttons.
flow_action:
type: string
enum:
- navigate
- data_exchange
description: Flow action type for FLOW-type buttons.
navigate_screen:
type: string
description: Target screen name for FLOW buttons with navigate action.
description: Array of button objects. Meta supports various combinations of button types.
WhatsappTemplateCarouselComponent:
type: object
description: Carousel component for multi-card templates. Each card can contain its own header, body, and buttons.
required:
- type
- cards
properties:
type:
type: string
enum:
- CAROUSEL
cards:
type: array
description: Array of card objects, each with its own components.
items:
type: object
properties:
components:
type: array
items:
type: object
WhatsappTemplateData:
type: object
properties:
id:
type: string
record_type:
type: string
example: whatsapp_message_template
template_id:
type: string
name:
type: string
category:
type: string
enum:
- MARKETING
- UTILITY
- AUTHENTICATION
language:
type: string
status:
type: string
description: Current template status from Meta (e.g. PENDING, APPROVED, REJECTED, PAUSED, DISABLED). Additional
statuses may be returned as Meta evolves the template lifecycle.
rejection_reason:
type: string
components:
type: array
items:
type: object
description: Template components (header, body, footer, buttons) as submitted, including example values.
whatsapp_business_account:
type: object
properties:
id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
WhatsappTemplateFooterComponent:
type: object
description: Optional footer displayed at the bottom of the message. Does not support variables.
required:
- type
properties:
type:
type: string
enum:
- FOOTER
text:
type: string
description: Footer text. Maximum 60 characters. For non-authentication templates.
maxLength: 60
code_expiration_minutes:
type: integer
description: OTP code expiration time in minutes. Used in AUTHENTICATION template footers instead of free-form text.
WhatsappTemplateHeaderComponent:
type: object
description: Optional header displayed at the top of the message.
required:
- type
- format
properties:
type:
type: string
enum:
- HEADER
format:
type: string
enum:
- TEXT
- IMAGE
- VIDEO
- DOCUMENT
- LOCATION
description: 'Header format type: TEXT (supports one variable), IMAGE, VIDEO, DOCUMENT, or LOCATION.'
text:
type: string
description: Header text. Required when format is TEXT. Supports one variable ({{1}}). Variables cannot be at the
start or end.
example:
type: object
description: Sample values for header variables.
properties:
header_text:
type: array
items:
type: string
description: Sample values for text header variables.
header_handle:
type: array
items:
type: string
description: Media handle for IMAGE, VIDEO, or DOCUMENT headers.
WhatsappUpdateConversationalComponentRequest:
type: object
properties:
commands:
type: array
description: List of commands
items:
type: object
properties:
command:
type: string
description:
type: string
ice_breakers:
type: array
description: List of ice breakers
items:
type: string
WhatsappUpdateProfileRequest:
type: object
properties:
display_name:
type: string
about:
type: string
maxLength: 139
description:
type: string
maxLength: 512
category:
type: string
email:
type: string
website:
type: string
address:
type: string
profile_id:
type: string
format: uuid
description: Messaging profile ID for inbound messages
WhatsappUpdateTemplateRequest:
type: object
properties:
category:
type: string
enum:
- MARKETING
- UTILITY
- AUTHENTICATION
components:
type: array
description: Updated template components. Same structure as the create request.
items:
oneOf:
- $ref: '#/components/schemas/WhatsappTemplateHeaderComponent'
- $ref: '#/components/schemas/WhatsappTemplateBodyComponent'
- $ref: '#/components/schemas/WhatsappTemplateFooterComponent'
- $ref: '#/components/schemas/WhatsappTemplateButtonsComponent'
- $ref: '#/components/schemas/WhatsappTemplateCarouselComponent'
description: A template component. Additional Meta component types not listed here are also accepted.
WhatsappUserData:
type: object
properties:
record_type:
type: string
example: whatsapp_user_data
webhook_url:
type: string
format: url
description: URL to receive Whatsapp signup events
webhook_failover_url:
type: string
format: url
description: Failover URL to receive Whatsapp signup events
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
WhatsappVerifyCodeRequest:
type: object
required:
- code
properties:
code:
type: string
WhatsappWabaAdded:
type: object
required:
- record_type
- id
- event_type
- occurred_at
- payload
properties:
record_type:
type: string
enum:
- event
id:
type: string
format: uuid
event_type:
type: string
enum:
- whatsapp.waba_added
occurred_at:
type: string
format: date-time
payload:
$ref: '#/components/schemas/WhatsappWabaAddedPayload'
WhatsappWabaAddedEvent:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/WhatsappWabaAdded'
WhatsappWabaAddedPayload:
type: object
required:
- record_type
- waba_id
- status
- event_id
properties:
record_type:
type: string
enum:
- waba_account_added
waba_id:
type: string
description: Meta WhatsApp Business Account identifier.
phone_numbers:
type: array
items:
type: string
description: Phone numbers found on the WABA. Omitted for standard sessions started with a phone_number_id, and
for sessions that fail before Telnyx fetches the numbers.
status:
type: string
enum:
- SUCCESS
- FAILURE
description: Signup session outcome.
event_id:
type: string
description: Signup session ID.
errors:
type: array
items:
type: string
description: Errors recorded during provisioning.
WidgetSettings:
type: object
properties:
theme:
type: string
enum:
- light
- dark
description: The visual theme for the widget.
audio_visualizer_config:
$ref: '#/components/schemas/AudioVisualizerConfig'
start_call_text:
type: string
description: Custom text displayed on the start call button.
default_state:
type: string
enum:
- expanded
- collapsed
description: The default state of the widget.
position:
type: string
enum:
- fixed
- static
description: The positioning style for the widget.
view_history_url:
type:
- string
- 'null'
description: URL to view conversation history.
report_issue_url:
type:
- string
- 'null'
description: URL for users to report issues.
give_feedback_url:
type:
- string
- 'null'
description: URL for users to give feedback.
agent_thinking_text:
type: string
description: Text displayed while the agent is processing.
speak_to_interrupt_text:
type: string
description: Text prompting users to speak to interrupt.
logo_icon_url:
type:
- string
- 'null'
description: URL to a custom logo icon for the widget.
title: WidgetSettings
description: Configuration settings for the assistant's web widget.
WireguardInterface:
allOf:
- $ref: '#/components/schemas/Record'
- $ref: '#/components/schemas/Interface'
- type: object
title: WireguardInterface
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: wireguard_interface
endpoint:
type: string
description: The Telnyx WireGuard peers `Peer.endpoint` value.
example: 203.0.113.0:51871
readOnly: true
public_key:
type: string
description: The Telnyx WireGuard peers `Peer.PublicKey`.
readOnly: true
example: qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU=
enable_sip_trunking:
type: boolean
description: Enable SIP traffic forwarding over VPN interface.
example: false
WireguardInterfaceCreate:
allOf:
- $ref: '#/components/schemas/WireguardInterface'
- $ref: '#/components/schemas/RegionIn'
- type: object
title: WireguardInterfaceCreate
required:
- network_id
- region_code
WireguardInterfaceRead:
allOf:
- $ref: '#/components/schemas/WireguardInterface'
- $ref: '#/components/schemas/RegionOut'
WireguardPeer:
allOf:
- $ref: '#/components/schemas/Record'
- $ref: '#/components/schemas/WireguardPeerPatch'
- type: object
title: WireguardPeer
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: wireguard_peer
last_seen:
type: string
description: ISO 8601 formatted date-time indicating when peer sent traffic last time.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
wireguard_interface_id:
description: The id of the wireguard interface associated with the peer.
type: string
format: uuid
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
private_key:
type: string
description: Your WireGuard `Interface.PrivateKey`. This attribute is only ever utlised if, on POST,
you do NOT provide your own `public_key`. In which case, a new Public and Private key pair will be generated
for you. When your `private_key` is returned, you must save this immediately as we do not save it within Telnyx.
If you lose your Private Key, it can not be recovered.
example: qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU=
readOnly: true
WireguardPeerCreate:
allOf:
- $ref: '#/components/schemas/WireguardPeer'
- type: object
title: WireguardPeerCreate
required:
- wireguard_interface_id
WireguardPeerPatch:
type: object
title: WireguardPeerPatch
properties:
public_key:
type: string
description: The WireGuard `PublicKey`. If you do not provide a Public Key, a new Public and Private
key pair will be generated for you.
example: qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU=
WirelessBlocklist:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
readOnly: true
example: wireless_blocklist
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
name:
description: The wireless blocklist name.
type: string
example: My wireless blocklist.
type:
description: The type of the wireless blocklist.
type: string
enum:
- country
- mcc
- plmn
default: country
example: country
values:
description: Values to block. The values here depend on the `type` of Wireless Blocklist.
type: array
items:
anyOf:
- $ref: '#/components/schemas/CountryCode'
- $ref: '#/components/schemas/MobileCountryCode'
- $ref: '#/components/schemas/PLMNCode'
example:
- CA
- MX
- US
WirelessConnectivityLog:
type: object
title: WirelessConnectivityLog
description: This object represents a wireless connectivity session log that happened through a SIM card. It aids in
finding out potential problems when the SIM is not able to attach properly.
properties:
record_type:
type: string
example: wireless_connectivity_log
readOnly: true
id:
type: integer
example: 137509451
description: Uniquely identifies the session.
readOnly: true
sim_card_id:
type: string
format: uuid
description: The identification UUID of the related SIM card resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
log_type:
type: string
enum:
- registration
- data
example: registration
description: The type of the session, 'registration' being the initial authentication session and 'data' the actual
data transfer sessions.
readOnly: true
imsi:
type: string
description: 'SIM cards are identified on their individual network operators by a unique International Mobile Subscriber
Identity (IMSI).
Mobile network operators connect mobile phone calls and communicate with their market SIM cards using their IMSIs.
The IMSI is stored in the Subscriber Identity Module (SIM) inside the device and is sent by the device to the
appropriate network. It is used to acquire the details of the device in the Home Location Register (HLR) or the
Visitor Location Register (VLR).
'
readOnly: true
example: 081932214823362973
imei:
type: string
description: The International Mobile Equipment Identity (or IMEI) is a number, usually unique, that identifies
the device currently being used connect to the network.
readOnly: true
example: '490154203237518'
mobile_country_code:
type: string
description: 'It''s a three decimal digit that identifies a country.
This code is commonly seen joined with a Mobile Network Code (MNC) in a tuple that allows identifying a carrier
known as PLMN (Public Land Mobile Network) code.'
readOnly: true
example: '310'
mobile_network_code:
type: string
description: "It's a two to three decimal digits that identify a network. \n This code is commonly seen\
\ joined with a Mobile Country Code (MCC) in a tuple that allows identifying a carrier known as PLMN (Public Land\
\ Mobile Network) code."
readOnly: true
example: '410'
start_time:
type: string
description: ISO 8601 formatted date-time indicating when the session started.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
stop_time:
type: string
description: ISO 8601 formatted date-time indicating when the session ended.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the record was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
last_seen:
type: string
description: ISO 8601 formatted date-time indicating when the last heartbeat to the device was successfully recorded.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
apn:
type: string
description: The Access Point Name (APN) identifies the packet data network that a mobile data user wants to communicate
with.
readOnly: true
example: data00.telnyx
ipv4:
type: string
description: 'The SIM''s address in the currently connected network. This IPv4 address is usually obtained dynamically,
so it may vary according to the location or new connections.
'
readOnly: true
example: 192.168.0.0
ipv6:
type: string
description: 'The SIM''s address in the currently connected network. This IPv6 address is usually obtained dynamically,
so it may vary according to the location or new connections.
'
readOnly: true
example: 2001:cdba:0000:0000:0000:0000:3257:9652
radio_access_technology:
type: string
description: The radio technology the SIM card used during the session.
readOnly: true
example: LTE
state:
type: string
description: The state of the SIM card after when the session happened.
readOnly: true
example: provisioned
cell_id:
type: string
description: The cell ID to which the SIM connected.
readOnly: true
example: 311210-6813
WirelessCost:
type: object
properties:
amount:
type: string
description: Final cost. Cost is calculated as rate * unit
example: '0.1'
currency:
type: string
description: Currency of the rate and cost
example: USD
enum:
- AUD
- CAD
- EUR
- GBP
- USD
WirelessPcrfService:
type: object
properties:
id:
type: string
description: The service identifier.
example: service_123
name:
type: string
description: The name of the service.
example: Netflix
group:
type: string
description: The group the service belongs to.
example: Streaming
resource_type:
type: string
readOnly: true
example: wireless_pcrf_service
WirelessRate:
type: object
properties:
amount:
type: string
description: Rate from which cost is calculated
example: '0.1'
currency:
type: string
description: Currency of the rate and cost
example: USD
enum:
- AUD
- CAD
- EUR
- GBP
- USD
X402PaymentRequirements:
type: object
description: x402 protocol v2 payment requirements. Contains all information needed to construct and sign a payment
authorization.
properties:
x402Version:
type: integer
enum:
- 2
description: x402 protocol version. Currently always 2.
resource:
type: object
description: The resource being paid for. Included in the payment signature.
properties:
url:
type: string
description: Canonical URL of the payment resource.
description:
type: string
description: Human-readable description of the payment.
mimeType:
type: string
description: MIME type of the resource.
accepts:
type: array
description: Accepted payment schemes. Currently only the `exact` EVM scheme is supported.
items:
type: object
properties:
scheme:
type: string
description: Payment scheme (e.g. "exact").
network:
type: string
description: Blockchain network identifier in CAIP-2 format (e.g. "eip155:8453" for Base).
amount:
type: string
description: Amount in the token's smallest unit.
asset:
type: string
description: Token contract address (e.g. USDC on Base).
payTo:
type: string
description: Recipient wallet address.
maxTimeoutSeconds:
type: integer
description: Maximum time in seconds before the payment authorization expires.
extra:
type: object
description: Additional scheme-specific parameters including EIP-712 domain info and the facilitator URL.
properties:
quoteId:
type: string
facilitatorUrl:
type: string
name:
type: string
description: EIP-712 domain name (e.g. "USD Coin").
version:
type: string
description: EIP-712 domain version.
X402QuoteRequest:
type: object
required:
- amount_usd
properties:
amount_usd:
type: string
description: Amount in USD to fund (minimum 5.00, maximum 10000.00).
example: '50.00'
X402QuoteResponse:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique quote identifier. Use this to settle the payment.
record_type:
type: string
enum:
- quote
amount_usd:
type: string
description: The quoted amount in USD.
amount_crypto:
type: string
description: The equivalent amount in the payment cryptocurrency's smallest unit (e.g. USDC has 6 decimals,
so $50.00 = "50000000").
network:
type: string
description: The blockchain network for the payment in CAIP-2 format (e.g. eip155:8453 for Base).
expires_at:
type: string
format: date-time
description: ISO 8601 timestamp when the quote expires.
payment_requirements:
$ref: '#/components/schemas/X402PaymentRequirements'
X402SettleRequest:
type: object
required:
- id
properties:
id:
type: string
description: The quote ID to settle.
payment_signature:
type: string
description: Base64-encoded signed payment authorization (x402 PaymentPayload). Can alternatively be provided via
the PAYMENT-SIGNATURE header.
X402SettlementErrorResponse:
type: object
description: Error response for x402 settlement failures. Uses string error codes from the x402 error handling system.
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
description: Machine-readable error code.
enum:
- invalid_signature
- expired_authorization
- invalid_nonce
- insufficient_balance
- insufficient_funds
- insufficient_allowance
- facilitator_unavailable
- facilitator_timeout
- settlement_timeout
- transaction_failed
- unknown
title:
type: string
description: Short error title (e.g. "Payment Failed").
detail:
type: string
description: Human-readable error description with guidance.
X402TransactionDetailResponse:
type: object
properties:
data:
$ref: '#/components/schemas/X402TransactionRecord'
X402TransactionListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/X402TransactionRecord'
meta:
$ref: '#/components/schemas/x402-transactions_PaginationMeta'
X402TransactionRecord:
type: object
description: An x402 payment transaction.
properties:
id:
type: string
format: uuid
description: Unique transaction identifier.
record_type:
type: string
enum:
- x402_transaction
amount:
type: string
description: The transaction amount in the specified currency.
currency:
type: string
description: The currency of the transaction amount (e.g. USD).
status:
type: string
description: The settlement status of the transaction. x402 transactions are created after successful on-chain settlement,
so the status is `settled`.
enum:
- settled
quote_id:
type: string
description: The original quote ID associated with this transaction.
tx_hash:
type: string
nullable: true
description: The on-chain transaction hash, if available.
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the transaction was created.
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp when the transaction was last updated.
X402TransactionResponse:
type: object
properties:
data:
type: object
properties:
id:
type: string
description: Unique transaction identifier.
record_type:
type: string
enum:
- x402_transaction
amount:
type: string
description: The transaction amount in the specified currency.
currency:
type: string
description: The currency of the transaction amount (e.g. USD).
status:
type: string
description: The settlement status of the transaction.
enum:
- settled
quote_id:
type: string
description: The original quote ID associated with this transaction.
tx_hash:
type: string
nullable: true
description: The on-chain transaction hash, if available.
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the transaction was created.
XAIProviderParams:
type: object
description: xAI provider-specific parameters.
required:
- voice_id
properties:
voice_id:
type: string
description: xAI voice identifier.
enum:
- eve
- ara
- rex
- sal
- leo
language:
type: string
description: Language code, or `auto` to detect.
default: auto
output_format:
type: string
description: Audio output format.
enum:
- mp3
- wav
- pcm
- mulaw
- alaw
default: mp3
sample_rate:
type: integer
description: Audio sample rate in Hz.
enum:
- 8000
- 16000
- 22050
- 24000
- 44100
- 48000
default: 24000
XAIVoiceSettings:
type: object
title: xAI Voice Settings
properties:
type:
type: string
enum:
- xai
description: Voice settings provider type
language:
description: Language code, or `auto` to detect automatically.
type: string
default: auto
required:
- type
XaiTranscriptionLanguage:
title: xAI transcription engine list of languages
type: string
description: Language to use for speech recognition
example: en
default: en
enum:
- ar
- cs
- da
- de
- en
- es
- fa
- fil
- fr
- hi
- id
- it
- ja
- ko
- mk
- ms
- nl
- pl
- pt
- ro
- ru
- sv
- th
- tr
- vi
active:
type: boolean
description: The active status of the authentication provider
default: true
example: true
address_book:
type: boolean
description: Indicates whether or not the address should be considered part of your list of addresses that appear for
regular use.
example: false
default: true
administrative_area:
type: string
description: The locality of the address. For US addresses, this corresponds to the state of the address.
example: TX
ai-gateway-resources_Error:
type: object
additionalProperties: false
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorItem'
minItems: 1
required:
- errors
ai-gateway-resources_PageMeta:
type: object
additionalProperties: false
properties:
page_number:
type: integer
minimum: 1
page_size:
type: integer
minimum: 1
maximum: 100
has_more:
type: boolean
snapshot:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
required:
- page_number
- page_size
- has_more
- snapshot
ai-gateway-resources_Scope:
type: string
enum:
- token_group
- token_user
- token_key
- end_user
ai-gateway-spend_Error:
type: object
additionalProperties: false
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorItem'
minItems: 1
required:
- errors
ai-gateway-spend_PageMeta:
type: object
additionalProperties: false
properties:
page_number:
type: integer
minimum: 1
page_size:
type: integer
minimum: 1
maximum: 100
has_more:
type: boolean
snapshot:
type: string
minLength: 1
maxLength: 256
pattern: ^[^\u0000-\u001f\u007f]+$
required:
- page_number
- page_size
- has_more
- snapshot
ai-gateway-spend_Scope:
type: string
enum:
- token_group
- token_user
- token_key
- end_user
ai-gateway_Error:
type: object
additionalProperties: false
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorItem'
minItems: 1
required:
- errors
ai-gateway_Scope:
type: string
enum:
- token_group
- token_user
- token_key
- end_user
attempt:
description: Webhook delivery attempt details.
properties:
status:
type: string
enum:
- delivered
- failed
started_at:
description: ISO 8601 timestamp indicating when the attempt was initiated.
type: string
format: date-time
finished_at:
description: ISO 8601 timestamp indicating when the attempt has finished.
type: string
format: date-time
http:
$ref: '#/components/schemas/http'
errors:
description: Webhook delivery error codes.
type: array
items:
type: integer
example:
- status: delivered
started_at: '2020-08-10T14:00:05.364Z'
finished_at: '2020-08-10T14:00:05.595Z'
http:
request:
url: https://fallback.example.com/webhooks
headers:
- - Accept
- '*/*'
response:
status: 200
headers:
- - Content-Type
- text/html
body: All good.
- status: failed
started_at: '2020-08-10T14:00:05.004Z'
finished_at: '2020-08-10T14:00:05.360Z'
http:
request:
url: https://typo.example.com/webhooks
headers:
- - Accept
- '*/*'
response:
status: 404
headers:
- - Content-Type
- text/html
- - Pragma
- no-cache
body: Oops. Not found.
errors:
- 75499
- status: failed
started_at: '2020-08-10T14:00:00.000Z'
finished_at: '2020-08-10T14:00:05.000Z'
http:
request:
url: https://slow.example.com/webhooks
headers:
- 'Accept: */*'
reponse: null
errors:
- code: '75001'
title: Could not resolve name
detail: Unable to resolve the webhook URL domain name
audit-logs_Error:
type: object
properties:
code:
type: string
description: Error code.
example: '10001'
title:
type: string
description: Short description of the error.
example: Unauthorized
detail:
type: string
description: Detailed information about the error.
example: The request requires user authentication.
audit-logs_PaginationMeta:
type: object
title: Pagination Meta
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 50
page_number:
type: integer
example: 1
page_size:
type: integer
example: 10
azure_models:
type: string
enum:
- fast
batch-csv_PaginationMeta:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
batch-csv_PaginationMeta_705dfa7312:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
billing-group_Error:
type: object
required:
- code
- title
properties:
code:
type: integer
format: int32
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
properties: {}
additionalProperties: true
billing_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
borough:
type: string
description: The borough of the address. This field is not used for addresses in the US but is used for some international
addresses.
example: Guadalajara
bot-signup_Error:
type: object
description: API error. General errors carry only `detail`; structured errors also include `code`, `title`, `source`,
and `meta`.
properties:
code:
type: string
description: Machine-readable Telnyx error code.
example: '10005'
title:
type: string
description: Short human-readable summary.
example: Resource not found
detail:
type: string
description: Human-readable explanation of the error.
example: The requested resource or URL could not be found.
source:
type: object
properties:
pointer:
type: string
description: JSON pointer to the offending attribute.
example: /
meta:
type: object
properties:
url:
type: string
description: Link to the error documentation.
example: https://developers.telnyx.com/docs/overview/errors/10005
required:
- detail
bot-signup_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/bot-signup_Error'
required:
- errors
branded-calling_Error:
type: object
required:
- code
- title
- detail
- meta
properties:
code:
type: string
example: '10005'
description: Stable numeric Telnyx error catalog id. See `meta.url` for the full catalog entry.
title:
type: string
example: Invalid parameters
description: Short human-readable category, e.g. `Bad Request`, `Duplicate resource`, `Not Found`, `Forbidden`.
Treat as advisory only - the stable identifier is `code`.
detail:
type: string
example: field required
description: Context-specific message describing what went wrong on this particular request. May embed offending
values; do not rely on it for programmatic matching - branch on `code`.
meta:
type: object
required:
- url
properties:
url:
type: string
format: uri
example: https://developers.telnyx.com/docs/overview/errors/10005
pending_check_ids:
type: array
items:
type: string
format: uuid
description: Set on `422 vetting_checks_incomplete` responses from `/admin/dir/{id}/approve` and `/admin/phone-number-batches/approve`.
Lists the still-pending vetting check ids.
pending_check_codes:
type: array
items:
type: string
description: Codes of the pending vetting checks (e.g. `loa_signature_valid`).
pending_check_labels:
type: array
items:
type: string
description: Human-readable labels of the pending vetting checks.
description: Carries `url` linking to the Telnyx error catalog entry for this `code`. Useful for forwarding the
user to documentation.
source:
type: object
description: Optional pointer at the offending field of the request.
properties:
pointer:
type: string
example: /body/legal_name
parameter:
type: string
example: page[size]
description: A single entry in the canonical Telnyx error envelope. `code` is the stable Telnyx error catalog id; the
human-readable explanation lives at `meta.url`. `detail` is a context-specific message; `source.pointer` (when present)
names the offending field of the request.
branded-calling_Errors:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/branded-calling_Error'
description: List of one or more error entries. Order is not significant.
description: Canonical Telnyx error envelope. Returned on every 4xx and 5xx response from this service. `errors` is
non-empty; multiple entries indicate multiple distinct problems with the same request (e.g. one entry per invalid
phone number on a bulk operation).
branded-calling_PaginationMeta:
type: object
required:
- total_pages
- total_results
- page_number
- page_size
properties:
total_pages:
type: integer
example: 3
description: Total number of pages available given the current `page_size`.
total_results:
type: integer
example: 42
description: Total number of items across all pages (excludes soft-deleted rows).
page_number:
type: integer
example: 1
description: 1-based index of this page. Echoes the `page[number]` query parameter (default `1`).
page_size:
type: integer
example: 20
description: Number of items returned in this page's `data` array. Capped at 250.
description: JSON:API pagination metadata returned with every paginated list response. Page numbering is 1-based. `page_size`
reports the number of items actually returned in `data` for this page; the requested size is taken from the `page[size]`
query parameter.
brands_HTTPValidationError:
title: HTTPValidationError
type: object
properties:
detail:
title: Detail
type: array
items:
$ref: '#/components/schemas/ValidationError'
business_name:
type: string
description: The business name associated with the address. An address must have either a first last name or a business
name.
example: Toy-O'Kon
call-control_Error:
required:
- code
- title
properties:
code:
type: string
format: integer
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
call-control_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/call-control_Error'
call-recordings_CursorPaginationMeta:
type: object
title: Cursor Pagination Meta
properties:
cursors:
$ref: '#/components/schemas/Cursor'
next:
type: string
description: Path to next page.
example: /v2/recording_transcriptions?page[after]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI=
previous:
type: string
description: Path to previous page.
example: /v2/recording_transcriptions?page[before]=v1:g3QAAAADZAAKdGVsbnl4X2lkc2wAAAABbQAAACRlYmRiYzdkNi1kZWRmLTExZWQtYTM3MS0wMjQyMGFlZjAwYjRqZAAJdGltZXN0YW1wbggA8Le4pGhpVxdkAAR0eXBlZAAFYWZ0ZXI=
call-recordings_Error:
required:
- code
- title
properties:
code:
type: string
description: Error code identifier (string or numeric string).
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
call-scripting_CreateQueueRequest:
type: object
title: Create Queue Request
properties:
MaxSize:
description: The maximum size of the queue.
example: '10'
type: integer
FriendlyName:
description: A human readable name for the queue.
example: Support Queue
type: string
example:
MaxSize: '10'
FriendlyName: Support Queue
call-scripting_CreateQueueRequest_c75353cb83:
type: object
title: Create Queue Request
properties:
MaxSize:
description: The maximum size of the queue.
example: 10
type: integer
FriendlyName:
description: A human readable name for the queue.
example: Support Queue
type: string
example:
MaxSize: 10
FriendlyName: Support Queue
call-scripting_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
call-scripting_PaginationMeta:
title: Pagination Meta
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
call-scripting_ResourceNotFoundError:
type: object
title: Resource not found
example:
errors:
- detail: Resource not found
properties:
errors:
type: array
items:
type: object
properties:
detail:
type: string
call-scripting_ResourceNotFoundError_c75353cb83:
type: object
title: Resource not found
example:
errors:
- detail: Resource not found
properties:
errors:
type: array
items:
type: object
properties:
detail:
type: string
call-scripting_UpdateConferenceParticipantRequest:
type: object
title: Update Conference Participant Request
properties:
Muted:
description: Whether the participant should be muted.
example: 'true'
type: boolean
Hold:
description: Whether the participant should be on hold.
example: 'true'
type: boolean
HoldUrl:
description: The URL to be called using the `HoldMethod` for music that plays when the participant is on hold. The
URL may return an MP3 file, a WAV file, or a TwiML document that contains ``, ``, ``, or ``
verbs.
example: https://www.example.com/hold-music.xml
type: string
HoldMethod:
description: The HTTP method to use when calling the `HoldUrl`.
example: POST
enum:
- GET
- POST
type: string
AnnounceUrl:
description: The URL to call to announce something to the participant. The URL may return an MP3 fileo a WAV file,
or a TwiML document that contains ``, ``, ``, or `` verbs.
example: https://www.example.com/announce.xml
type: string
AnnounceMethod:
description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
WaitUrl:
description: The URL to call for an audio file to play while the participant is waiting for the conference to start.
example: https://www.example.com/wait_music.mp3
type: string
BeepOnExit:
description: Whether to play a notification beep to the conference when the participant exits.
example: 'false'
type: boolean
EndConferenceOnExit:
description: Whether to end the conference when the participant leaves.
example: 'false'
type: boolean
Coaching:
description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given.
example: 'false'
type: boolean
CallSidToCoach:
description: The SID of the participant who is being coached. The participant being coached is the only participant
who can hear the participant who is coaching.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
type: string
example:
BeepOnExit: 'false'
call-scripting_UpdateConferenceParticipantRequest_c75353cb83:
type: object
title: Update Conference Participant Request
properties:
Muted:
description: Whether the participant should be muted.
example: true
type: boolean
Hold:
description: Whether the participant should be on hold.
example: true
type: boolean
HoldUrl:
description: The URL to be called using the `HoldMethod` for music that plays when the participant is on hold. The
URL may return an MP3 file, a WAV file, or a TwiML document that contains ``, ``, ``, or ``
verbs.
example: https://www.example.com/hold-music.xml
type: string
HoldMethod:
description: The HTTP method to use when calling the `HoldUrl`.
example: POST
enum:
- GET
- POST
type: string
AnnounceUrl:
description: The URL to call to announce something to the participant. The URL may return an MP3 fileo a WAV file,
or a TwiML document that contains ``, ``, ``, or `` verbs.
example: https://www.example.com/announce.xml
type: string
AnnounceMethod:
description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
WaitUrl:
description: The URL to call for an audio file to play while the participant is waiting for the conference to start.
example: https://www.example.com/wait_music.mp3
type: string
BeepOnExit:
description: Whether to play a notification beep to the conference when the participant exits.
example: false
type: boolean
EndConferenceOnExit:
description: Whether to end the conference when the participant leaves.
example: false
type: boolean
Coaching:
description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given.
example: false
type: boolean
CallSidToCoach:
description: The SID of the participant who is being coached. The participant being coached is the only participant
who can hear the participant who is coaching.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
type: string
example:
BeepOnExit: false
call-scripting_UpdateConferenceRequest:
type: object
title: Update Conference Request
properties:
Status:
description: The new status of the resource. Specifying `completed` will end the conference and hang up all participants.
example: completed
type: string
AnnounceUrl:
description: The URL we should call to announce something into the conference. The URL may return an MP3 file, a
WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs.
example: https://www.example.com/announce.xml
type: string
AnnounceMethod:
description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
example:
Status: completed
call-scripting_UpdateConferenceRequest_c75353cb83:
type: object
title: Update Conference Request
properties:
Status:
description: The new status of the resource. Specifying `completed` will end the conference and hang up all participants.
example: completed
type: string
AnnounceUrl:
description: The URL we should call to announce something into the conference. The URL may return an MP3 file, a
WAV file, or a TwiML document that contains ``, ``, ``, or `` verbs.
example: https://www.example.com/announce.xml
type: string
AnnounceMethod:
description: The HTTP method used to call the `AnnounceUrl`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
example:
Status: completed
call-scripting_UpdateQueueRequest:
type: object
title: Update Queue Request
properties:
MaxSize:
description: The maximum size of the queue.
example: '10'
type: integer
example:
MaxSize: '10'
call-scripting_UpdateQueueRequest_c75353cb83:
type: object
title: Update Queue Request
properties:
MaxSize:
description: The maximum size of the queue.
example: 10
type: integer
example:
MaxSize: 10
callAnalyzed:
type: object
title: Call Analyzed
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.analyzed
enum:
- call.analyzed
description: The type of event being delivered.
id:
type: string
format: uuid
example: afa6f4ac-f569-575b-9127-75a2746cf0ab
description: Unique identifier for the event.
occurred_at:
type: string
format: date-time
example: '2026-10-15T20:38:46.308491Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
assistant_id:
type: string
example: assistant-258e1b9b-aa09-5f71-a931-56fd3cf2eb1c
description: Unique identifier of the assistant involved in the call.
call_control_id:
type: string
example: v3:b5aa7d950dfd551e916cc42bee82e56e-510c4d08
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: '1294850382059482660'
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 9f4eec6d-19a9-503f-be41-024cfaf1d5a6
description: ID that is unique to the call leg.
call_session_id:
type: string
example: 340a438e-f327-5f36-be97-e5c13bde3a05
description: ID that is unique to the call session (group of related call legs).
client_state:
type: string
example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
description: Base64-encoded state received from a command.
conversation_id:
type: string
example: dc76aa9a-a1c2-5e6b-aed4-6775fe240151
description: ID unique to the conversation generated for the call.
llm_model:
type: string
example: moonshotai/Kimi-K2.6
description: The large language model used during the conversation.
stt_model:
type: string
example: deepgram/flux
description: The speech-to-text model used in the conversation.
tts_provider:
type: string
example: telnyx
description: The text-to-speech provider used in the call.
tts_model_id:
type: string
example: Ultra
description: The model ID used for text-to-speech synthesis.
tts_voice_id:
type: string
example: c80920a7-535c-5d39-b630-8ddf52d5a4f0
description: Voice ID used for TTS.
duration_sec:
type: integer
example: 37
description: Duration of the conversation in seconds.
from:
type: string
example: +131****7421
description: The caller's number or identifier.
to:
type: string
example: +131****4802
description: The callee's number or SIP address.
reason:
type:
- string
- 'null'
example: normal
description: Reason the conversation ended.
conversation_insights:
type:
- array
- 'null'
description: The conversation's generated insights, when insight generation was enabled for the assistant and
has completed. Each entry carries a `status` and the generated `conversation_insights` results. An empty array
when the conversation has no generated insights; null when insight data could not be retrieved.
items:
type: object
properties:
status:
type: string
example: completed
description: Status of insight generation for this entry.
conversation_insights:
type:
- array
- 'null'
description: Generated insight results.
items:
type: object
properties:
insight_id:
type: string
example: 6c5018ff-25a2-5364-b6be-f53de3d493c6
description: Identifier of the insight template the result was generated from.
result:
type: string
example: The user called the voice assistant to schedule a dental appointment. The assistant confirmed
availability for Tuesday at 10:00 AM and transferred the call to the office scheduling line.
description: The generated insight result.
cost:
type:
- object
- string
description: 'The session''s cost breakdown from Session Analysis, covering every product billed on the call:
the AI Voice Assistant engine minutes (`ai-voice-assistant`), LLM inference tokens (`inference`), and call-control,
SIP trunking, and recording lines. If cost data could not be retrieved after retries, this field carries the
placeholder string `No cost data available.` instead of an object.'
properties:
total:
type: string
example: '0.060300'
description: The total cost of the call, summed across every product in the breakdown.
currency:
type: string
example: USD
description: The currency of the cost amounts.
breakdown:
type: array
description: Cost lines grouped by product.
items:
type: object
title: Cost Breakdown
properties:
product:
type: string
example: ai-voice-assistant
description: The Telnyx product the cost line belongs to (for example `ai-voice-assistant`, `inference`,
`callcontrol-cdrs`, `siptrunking-cdrs`, `recording-cdrs`).
cost:
type: string
example: '0.050000'
description: Total cost for this product across the call, in the currency given by `cost.currency`.
recordings:
type:
- array
- 'null'
description: Recordings created for the call. An empty array when the call had no recordings; null when recording
data could not be retrieved.
items:
type: object
title: Recording
properties:
id:
type: string
example: 850f003e-1278-5d6b-baf2-918aae3031dc
description: Unique identifier of the recording.
start_time:
type: string
format: date-time
example: '2026-10-15T20:34:07.955834Z'
description: ISO 8601 datetime of when the recording started.
end_time:
type: string
format: date-time
example: '2026-10-15T20:34:52.395814Z'
description: ISO 8601 datetime of when the recording ended.
format:
type: string
example: mp3
description: The recording file format.
channels:
type: string
example: dual
description: The recording channel configuration.
download_urls:
type: object
description: Download URL per format. URLs are pre-signed and expire.
properties:
mp3:
type: string
description: Pre-signed URL for the mp3 recording file.
wav:
type: string
description: Pre-signed URL for the wav recording file.
example:
record_type: event
event_type: call.analyzed
id: afa6f4ac-f569-575b-9127-75a2746cf0ab
occurred_at: '2026-10-15T20:38:46.308491Z'
payload:
assistant_id: assistant-258e1b9b-aa09-5f71-a931-56fd3cf2eb1c
call_control_id: v3:b5aa7d950dfd551e916cc42bee82e56e-510c4d08
call_leg_id: 9f4eec6d-19a9-503f-be41-024cfaf1d5a6
call_session_id: 340a438e-f327-5f36-be97-e5c13bde3a05
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '1294850382059482660'
conversation_id: dc76aa9a-a1c2-5e6b-aed4-6775fe240151
conversation_insights:
- conversation_insights:
- insight_id: 6c5018ff-25a2-5364-b6be-f53de3d493c6
result: The user called the voice assistant to schedule a dental appointment. The assistant confirmed availability
for Tuesday at 10:00 AM and transferred the call to the office scheduling line to complete the booking.
status: completed
cost:
breakdown:
- cost: '0.050000'
product: ai-voice-assistant
- cost: '0.003600'
product: callcontrol-cdrs
- cost: '0.000900'
product: inference
- cost: '0.000800'
product: recording-cdrs
- cost: '0.005000'
product: siptrunking-cdrs
currency: USD
total: '0.060300'
duration_sec: 37
from: +131****7421
llm_model: moonshotai/Kimi-K2.6
reason: normal
recordings:
- channels: dual
download_urls:
mp3: https://us-central-1.telnyxcloudstorage.com/recordings/06069104-45f7-5d17-9fa7-34cfeb4534fa/2026-10-15/9f4eec6d-19a9-503f.mp3
end_time: '2026-10-15T20:34:52.395814Z'
format: mp3
id: 850f003e-1278-5d6b-baf2-918aae3031dc
start_time: '2026-10-15T20:34:07.955834Z'
stt_model: deepgram/flux
to: +131****4802
tts_model_id: Ultra
tts_provider: telnyx
tts_voice_id: c80920a7-535c-5d39-b630-8ddf52d5a4f0
callAnalyzedEvent:
type: object
title: Call Analyzed Event
properties:
data:
$ref: '#/components/schemas/callAnalyzed'
callConversationCreated:
type: object
title: Call Conversation Created
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.conversation.created
enum:
- call.conversation.created
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Unique identifier for the event.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
created_at:
type: string
format: date-time
example: '2025-05-29T13:35:38.927621Z'
description: Timestamp when the event was created in the system.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
call_leg_id:
type: string
example: cc29cce6-3c91-11f0-a8e5-02420aef3d20
description: ID that is unique to the call leg.
call_session_id:
type: string
example: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
description: ID that is unique to the call session (group of related call legs).
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
client_state:
type: string
example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
description: Base64-encoded state received from a command.
conversation_id:
type: string
example: 0424805b-adc1-4ff8-9f95-e1de6883ecbe
description: Unique identifier of the conversation created for this call.
format: uuid
from:
type: string
example: '+13124287921'
description: The caller's number or identifier.
to:
type: string
example: '+13125550100'
description: The callee's number or SIP address.
calling_party_type:
type: string
example: sip
enum:
- pstn
- sip
description: The type of calling party connection.
example:
record_type: event
event_type: call.conversation.created
id: eb8775a6-634f-48b0-b177-d5465a8a8e9f
occurred_at: '2025-05-29T13:35:38.817785Z'
created_at: '2025-05-29T13:35:38.927621Z'
payload:
call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ
call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20
call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '2694492062593582591'
conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe
from: '+13124287921'
to: '+13125550100'
description: A conversation has been created for the call. Use the conversation ID to correlate subsequent conversation
events.
callConversationCreatedEvent:
type: object
title: Call Conversation Created Event
properties:
data:
$ref: '#/components/schemas/callConversationCreated'
callConversationEnded:
type: object
title: Call Conversation Ended
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.conversation.ended
enum:
- call.conversation.ended
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Unique identifier for the event.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
created_at:
type: string
format: date-time
example: '2025-05-29T13:35:38.927621Z'
description: Timestamp when the event was created in the system.
payload:
type: object
properties:
assistant_id:
type: string
example: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d
description: Unique identifier of the assistant involved in the call.
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: cc29cce6-3c91-11f0-a8e5-02420aef3d20
description: ID that is unique to the call leg.
call_session_id:
type: string
example: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
description: ID that is unique to the call session (group of related call legs).
client_state:
type: string
example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
description: Base64-encoded state received from a command.
calling_party_type:
type: string
example: sip
enum:
- pstn
- sip
description: The type of calling party connection.
conversation_id:
type: string
example: 0424805b-adc1-4ff8-9f95-e1de6883ecbe
description: ID unique to the conversation or insight group generated for the call.
duration_sec:
type: integer
example: 3
description: Duration of the conversation in seconds.
reason:
type:
- string
- 'null'
example: customer_disconnect
description: Reason the conversation ended. For Conversation Relay, `customer_disconnect` indicates that the
customer WebSocket disconnected.
messages:
type: array
description: The conversation transcript, in order. By default it contains only `user` and `assistant` text
turns. When the assistant's `telephony_settings.conversation_ended_full_history` is `true`, it contains the
full conversation history, including assistant tool calls, tool results, and `system` and `developer` entries.
Redacted when data retention is disabled for the account.
items:
type: object
properties:
role:
type: string
enum:
- user
- assistant
- tool
- system
- developer
example: assistant
description: The author of the message. `tool`, `system`, and `developer` only appear when `conversation_ended_full_history`
is enabled. `system` and `developer` entries are informational (for example idle check-ins, voicemail
prompts, participant-left notices, or messages added through the API); their wording is not a stable
contract.
content:
type: string
example: Your balance is $42.10.
description: The text of the message. For a tool result, the tool output. May be absent on an assistant
message that only contains `tool_calls`.
timestamp:
type: string
format: date-time
example: '2025-05-29T13:35:36.123456Z'
description: ISO 8601 datetime of when the message was added to the conversation.
tool_calls:
type: array
description: Tools the assistant called in this turn. Only present on `assistant` messages when `conversation_ended_full_history`
is enabled.
items:
type: object
properties:
id:
type: string
example: call_1
description: Identifier of the tool call, referenced by the matching tool result's `tool_call_id`.
type:
type: string
enum:
- function
example: function
description: The type of tool call.
function:
type: object
properties:
name:
type: string
example: get_balance
description: The name of the tool that was called.
arguments:
type: string
example: '{"account":"123"}'
description: The arguments passed to the tool, as a JSON-encoded string.
tool_call_id:
type: string
example: call_1
description: The `id` of the tool call this message answers. Only present on `tool` messages when `conversation_ended_full_history`
is enabled.
from:
type: string
example: '+13124287921'
description: The caller's number or identifier.
to:
type: string
example: jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com
description: The callee's number or SIP address.
llm_model:
type: string
example: openai/gpt-4o
description: The large language model used during the conversation.
stt_model:
type: string
example: distil-whisper/distil-large-v2
description: The speech-to-text model used in the conversation.
tts_provider:
type: string
example: telnyx
description: The text-to-speech provider used in the call.
tts_model_id:
type: string
example: Natural
description: The model ID used for text-to-speech synthesis.
tts_voice_id:
type: string
example: Marissa
description: Voice ID used for TTS.
example:
record_type: event
event_type: call.conversation.ended
id: eb8775a6-634f-48b0-b177-d5465a8a8e9f
occurred_at: '2025-05-29T13:35:38.817785Z'
created_at: '2025-05-29T13:35:38.927621Z'
payload:
assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d
call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ
call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20
call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
calling_party_type: sip
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '2694492062593582591'
conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe
duration_sec: 3
from: '+13124287921'
to: jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com
llm_model: openai/gpt-4o
stt_model: distil-whisper/distil-large-v2
tts_model_id: Natural
tts_provider: telnyx
tts_voice_id: Marissa
reason: customer_disconnect
messages:
- role: assistant
content: Hi, how can I help you today?
timestamp: '2025-05-29T13:35:35.912345Z'
- role: user
content: Goodbye.
timestamp: '2025-05-29T13:35:37.654321Z'
callConversationEndedEvent:
type: object
title: Call Conversation Ended Event
properties:
data:
$ref: '#/components/schemas/callConversationEnded'
callConversationInsightsGenerated:
type: object
title: Call Conversation Insights Generated
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.conversation_insights.generated
enum:
- call.conversation_insights.generated
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
calling_party_type:
type: string
example: pstn
enum:
- pstn
- sip
description: The type of calling party connection.
insight_group_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the insight group being generated for the call.
results:
type: array
description: Array of insight results being generated for the call.
items:
type: object
properties:
insight_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the insight result being generated for the call.
result:
oneOf:
- type: object
description: The result of the insight.
- type: string
description: The result of the insight.
example:
record_type: event
event_type: call.conversation_insights.generated
id: 898e96ef-be63-45aa-9e7d-01332bff9a97
occurred_at: '2025-02-19T17:02:49.371454Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
calling_party_type: pstn
insight_group_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
results:
- insight_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
result: The user inquired about the menu at Ember & Oak. The menu offers various options, including vegetarian,
vegan, and gluten-free dishes, as well as a children's menu. The restaurant also has a daily happy hour from
4 PM to 6 PM and offers takeaway and delivery services. The user found the information helpful but had to leave
without making any further decisions or requests. No specific preferences or goals were expressed beyond inquiring
about the menu.
callConversationInsightsGeneratedEvent:
type: object
title: Call Conversation Insights Generated Event
properties:
data:
$ref: '#/components/schemas/callConversationInsightsGenerated'
callConversationStartFailed:
type: object
title: Call Conversation Start Failed
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.conversation.start_failed
enum:
- call.conversation.start_failed
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Unique identifier for the event.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
created_at:
type: string
format: date-time
example: '2025-05-29T13:35:38.927621Z'
description: Timestamp when the event was created in the system.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
call_leg_id:
type: string
example: cc29cce6-3c91-11f0-a8e5-02420aef3d20
description: ID that is unique to the call leg.
call_session_id:
type: string
example: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
description: ID that is unique to the call session (group of related call legs).
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
client_state:
type: string
example: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
description: Base64-encoded state received from a command.
from:
type: string
example: '+13124287921'
description: The caller's number or identifier.
to:
type: string
example: '+13125550100'
description: The callee's number or SIP address.
calling_party_type:
type: string
example: sip
enum:
- pstn
- sip
description: The type of calling party connection.
assistant_id:
type: string
example: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d
description: Identifier of the AI assistant that failed to start.
reason:
type: string
enum:
- invalid_request
- service_error
example: invalid_request
description: 'Why the conversation could not be started. `invalid_request`: the assistant request was rejected,
for example because the assistant ID does not exist. `service_error`: the assistant could not be started because
of an error on the Telnyx side.'
example:
record_type: event
event_type: call.conversation.start_failed
id: 3f1c2a9e-8d4b-4c6e-9a7f-1b2c3d4e5f60
occurred_at: '2025-05-29T13:35:38.817785Z'
created_at: '2025-05-29T13:35:38.927621Z'
payload:
assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d
call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ
call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20
call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '2694492062593582591'
from: '+13124287921'
to: '+13125550100'
reason: invalid_request
description: The AI assistant requested for the call could not be started, so no conversation was created. No `call.conversation.created`
or `call.conversation.ended` is sent for this attempt.
callConversationStartFailedEvent:
type: object
title: Call Conversation Start Failed Event
properties:
data:
$ref: '#/components/schemas/callConversationStartFailed'
callRecordingError:
type: object
title: Call Recording Error
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.recording.error
enum:
- call.recording.error
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
reason:
type: string
example: Internal server error
enum:
- Failed to authorize with storage using custom credentials
- Invalid credentials json
- Unsupported backend
- Internal server error
description: Indication that there was a problem recording the call.
example:
record_type: event
event_type: call.recording.error
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
reason: Internal server error
callRecordingErrorEvent:
type: object
title: Call Recording Error Event
properties:
data:
$ref: '#/components/schemas/callRecordingError'
callRecordingTranscriptionSaved:
type: object
title: Call Recording Transcription Saved
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: call.recording.transcription.saved
enum:
- call.recording.transcription.saved
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
properties:
call_control_id:
type: string
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
description: Call ID used to issue commands via Call Control API.
connection_id:
type: string
example: 7267xxxxxxxxxxxxxx
description: Call Control App ID (formerly Telnyx connection ID) used in the call.
call_leg_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the call and can be used to correlate webhook events.
call_session_id:
type: string
example: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
description: ID that is unique to the call session and can be used to correlate webhook events. Call session
is a group of related call legs that logically belong to the same phone call, e.g. an inbound and outbound
leg of a transferred call.
client_state:
type: string
example: aGF2ZSBhIG5pY2UgZGF5ID1d
description: State received from a command.
calling_party_type:
type: string
example: pstn
enum:
- pstn
- sip
description: The type of calling party connection.
recording_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the recording session and can be used to correlate webhook events.
recording_transcription_id:
type: string
example: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
description: ID that is unique to the transcription process and can be used to correlate webhook events.
status:
type: string
example: completed
enum:
- completed
description: The transcription status.
transcription_text:
type: string
example: Hi!
description: The transcribed text
example:
record_type: event
event_type: call.recording.transcription.saved
id: 898e96ef-be63-45aa-9e7d-01332bff9a97
occurred_at: '2025-02-19T17:02:49.371454Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
calling_party_type: pstn
recording_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
recording_transcription_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
status: completed
transcription_text: Hi!
callRecordingTranscriptionSavedEvent:
type: object
title: Call Recording Transcription Saved Event
properties:
data:
$ref: '#/components/schemas/callRecordingTranscriptionSaved'
calls_CallResourceIndex:
type: object
title: Multiple call resources
example:
calls: []
end: '0'
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
page: '0'
page_size: '1'
start: '0'
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
properties:
calls:
type: array
items:
$ref: '#/components/schemas/CallResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: '19'
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: '0'
page_size:
type: integer
description: The number of items on the page
example: '20'
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: '0'
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=0&PageSize=1
calls_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
calls_InitiateAICallRequest:
type: object
title: Initiate AI Call Request
required:
- From
- To
- AIAssistantId
properties:
From:
description: The phone number of the party initiating the call. Phone numbers are formatted with a `+` and country
code.
example: '+16175551212'
type: string
To:
description: The phone number of the called party. Phone numbers are formatted with a `+` and country code.
example: '+16175551212'
type: string
AIAssistantId:
description: The ID of the AI assistant to use for the call.
type: string
AIAssistantVersion:
description: The version of the AI assistant to use.
type: string
AIAssistantDynamicVariables:
description: Key-value map of dynamic variables to pass to the AI assistant.
type: object
additionalProperties:
type: string
example:
customer_name: John Doe
account_id: '12345'
CallerId:
description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number).
The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special
characters. If omitted, the display name will be the same as the number in the `From` field.
example: Info
type: string
StatusCallback:
description: URL destination for Telnyx to send status callback events for this AI call. When provided, this per-call
value overrides the status callback URL configured on the TeXML application/connection.
example: https://www.example.com/callback
type: string
StatusCallbackEvent:
description: 'The status callback events for which Telnyx should send a webhook for this AI call. Multiple events
can be defined when separated by a space. Valid values: initiated, ringing, answered, completed, no-answer, busy,
canceled, failed, analyzed. When provided, this per-call value overrides the status callback events configured
on the TeXML application/connection.'
example: initiated answered
default: completed
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback` and `StatusCallbacks` for this AI call. When provided,
this per-call value overrides the status callback method configured on the TeXML application/connection.
example: GET
default: POST
type: string
enum:
- GET
- POST
StatusCallbacks:
description: Array of URL destinations for Telnyx to send status callback events for this AI call. When provided,
these per-call values override the status callback URL configured on the TeXML application/connection.
type: array
items:
type: string
example:
- https://www.example.com/callback1
- https://www.example.com/callback2
CustomHeaders:
description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value'
properties.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom header
value:
type: string
description: The value of the custom header
required:
- name
- value
example:
- name: X-Custom-Header
value: custom-value
ConversationCallback:
description: URL destination for Telnyx to send AI conversation callback events for this call. Events include `conversation_created`
and `conversation_ended`.
example: https://www.example.com/conversation-callback
type: string
ConversationCallbackMethod:
description: HTTP request type used for `ConversationCallback` and `ConversationCallbacks`.
example: GET
default: POST
type: string
enum:
- GET
- POST
ConversationCallbacks:
description: Array of URL destinations for AI conversation callback events for this call. Events include `conversation_created`
and `conversation_ended`.
type: array
items:
type: string
example:
- https://www.example.com/conversation-callback1
- https://www.example.com/conversation-callback2
MachineDetection:
description: Enables Answering Machine Detection.
example: Enable
default: Disable
type: string
enum:
- Enable
- Disable
- DetectMessageEnd
DetectionMode:
description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection
example: Premium
default: Regular
type: string
enum:
- Premium
- Regular
- PremiumCallScreening
AsyncAmd:
description: Select whether to perform answering machine detection in the background. By default execution is blocked
until Answering Machine Detection is completed.
example: 'true'
default: 'false'
type: boolean
AsyncAmdStatusCallback:
description: URL destination for Telnyx to send AMD callback events to for the call.
example: https://www.example.com/callback
type: string
AsyncAmdStatusCallbackMethod:
description: HTTP request type used for `AsyncAmdStatusCallback`.
example: GET
default: POST
type: string
enum:
- GET
- POST
MachineDetectionTimeout:
description: Maximum timeout threshold in milliseconds for overall detection.
example: '5000'
default: '30000'
maximum: '60000'
minimum: '500'
type: integer
MachineDetectionPromptEndTimeout:
description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds.
Used when `DetectionMode` is `PremiumCallScreening`.
example: '5000'
minimum: '1000'
maximum: '120000'
type: integer
MachineDetectionSpeechThreshold:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored
when `premium` detection is used.
example: '2000'
default: '3500'
type: integer
MachineDetectionSpeechEndThreshold:
description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when
`premium` detection is used.
example: '2000'
default: '800'
type: integer
MachineDetectionSilenceTimeout:
description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium`
detection is used.
example: '2000'
default: '3500'
type: integer
Passports:
description: A string of passport identifiers to associate with the call.
type: string
TimeLimit:
description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400
(4 hours). Default is 14400 seconds.
example: '3600'
type: integer
minimum: '30'
maximum: '14400'
default: '14400'
Timeout:
description: The number of seconds to wait for the called party to answer the call before the call is canceled.
The minimum value is 5 and the maximum value is 120. Default is 30 seconds.
example: '60'
type: integer
minimum: '5'
maximum: '120'
default: '30'
x-stainless-param: timeout_seconds
Record:
description: Whether to record the entire participant's call leg. Defaults to `false`.
example: 'false'
type: boolean
RecordingChannels:
description: The number of channels in the final recording. Defaults to `mono`.
example: dual
type: string
enum:
- mono
- dual
RecordingStatusCallback:
description: The URL the recording callbacks will be sent to.
example: https://example.com/recording_status_callback
type: string
RecordingStatusCallbackMethod:
description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecordingStatusCallback`. Can
be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTimeout:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. The minimum value is 0. The default value is 0 (infinite).
example: '5'
type: integer
default: '0'
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
Trim:
description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
SendRecordingUrl:
$ref: '#/components/schemas/calls_SendRecordingUrl'
PreferredCodecs:
description: The list of comma-separated codecs to be offered on a call.
example: PCMA,PCMU
type: string
SipAuthUsername:
description: The username to use for SIP authentication.
example: user
type: string
SipAuthPassword:
description: The password to use for SIP authentication.
example: '1234'
type: string
SipRegion:
description: Defines the SIP region to be used for the call.
type: string
default: US
enum:
- US
- Europe
- Canada
- Australia
- Middle East
example: Canada
example:
From: '+13120001234'
To: '+13121230000'
AIAssistantId: ai-assistant-id-123
calls_InitiateCallRequest:
type: object
title: Initiate Call Request
required:
- To
- From
- ApplicationSid
properties:
ApplicationSid:
description: The ID of the TeXML Application.
type: string
To:
description: The phone number of the called party. Phone numbers are formatted with a `+` and country code.
example: '+16175551212'
type: string
From:
description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country
code.
example: '+16175551212'
type: string
CallerId:
description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number).
The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special
characters. If ommited, the display name will be the same as the number in the `From` field.
example: Info
type: string
Url:
description: The URL from which Telnyx will retrieve the TeXML call instructions.
example: https://www.example.com/instructions.xml
type: string
UrlMethod:
description: HTTP request type used for `Url`. The default value is inherited from TeXML Application setting.
example: GET
default: POST
type: string
enum:
- GET
- POST
FallbackUrl:
description: A failover URL for which Telnyx will retrieve the TeXML call instructions if the `Url` is not responding.
example: https://www.example.com/instructions-fallback.xml
type: string
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the call.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
default: POST
type: string
enum:
- GET
- POST
StatusCallbackEvent:
description: The call events for which Telnyx should send a webhook. Multiple events can be defined when separated
by a space.
example: initiated answered
default: completed
type: string
MachineDetection:
description: Enables Answering Machine Detection.
example: Enable
default: Disable
type: string
enum:
- Enable
- Disable
- DetectMessageEnd
DetectionMode:
description: Allows you to choose between Regular, Premium, and PremiumCallScreening detections. See https://developers.telnyx.com/docs/voice/programmable-voice/answering-machine-detection
example: Premium
default: Regular
type: string
enum:
- Premium
- Regular
- PremiumCallScreening
AsyncAmd:
description: Select whether to perform answering machine detection in the background. By default execution is blocked
until Answering Machine Detection is completed.
example: 'true'
default: 'false'
type: boolean
AsyncAmdStatusCallback:
description: URL destination for Telnyx to send AMD callback events to for the call.
example: https://www.example.com/callback
type: string
AsyncAmdStatusCallbackMethod:
description: HTTP request type used for `AsyncAmdStatusCallback`. The default value is inherited from TeXML Application
setting.
example: GET
default: POST
type: string
enum:
- GET
- POST
MachineDetectionTimeout:
description: Maximum timeout threshold in milliseconds for overall detection.
example: '5000'
default: '30000'
maximum: '60000'
minimum: '500'
type: integer
MachineDetectionPromptEndTimeout:
description: Silence duration threshold after a call screening prompt before ending prompt detection, in milliseconds.
Used when `DetectionMode` is `PremiumCallScreening`.
example: '5000'
minimum: '1000'
maximum: '120000'
type: integer
MachineDetectionSpeechThreshold:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored
when `premium` detection is used.
example: '2000'
default: '3500'
type: integer
MachineDetectionSpeechEndThreshold:
description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when
`premium` detection is used.
example: '2000'
default: '800'
type: integer
MachineDetectionSilenceTimeout:
description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium`
detection is used.
example: '2000'
default: '3500'
type: integer
CancelPlaybackOnMachineDetection:
description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`.
default: 'true'
example: 'false'
type: boolean
CancelPlaybackOnDetectMessageEnd:
description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`.
default: 'true'
example: 'false'
type: boolean
DeepfakeDetection:
description: Enables Deepfake Detection on the dialed call. When enabled, audio from the remote party is analyzed
to determine whether the voice is AI-generated. Results are delivered asynchronously via a callback.
example: Enable
type: string
enum:
- Enable
DeepfakeDetectionCallbackUrl:
description: URL destination for Telnyx to send deepfake detection callback events to for the call.
example: https://www.example.com/deepfake-callback
type: string
DeepfakeDetectionCallbackMethod:
description: HTTP request type used for `DeepfakeDetectionCallbackUrl`.
example: GET
default: POST
type: string
enum:
- GET
- POST
PreferredCodecs:
description: The list of comma-separated codecs to be offered on a call.
example: PCMA,PCMU
type: string
Record:
description: Whether to record the entire participant's call leg. Defaults to `false`.
example: 'false'
type: boolean
RecordingChannels:
description: The number of channels in the final recording. Defaults to `mono`.
example: dual
type: string
enum:
- mono
- dual
RecordingStatusCallback:
description: The URL the recording callbacks will be sent to.
example: https://example.com/recording_status_callback
type: string
RecordingStatusCallbackMethod:
description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can
be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTimeout:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. Please note that the transcription is used to detect silence
and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite)
example: '5'
type: integer
default: '0'
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
SendRecordingUrl:
$ref: '#/components/schemas/calls_SendRecordingUrl'
SipAuthPassword:
description: The password to use for SIP authentication.
example: '1234'
type: string
SipAuthUsername:
description: The username to use for SIP authentication.
example: user
type: string
Trim:
description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
CustomHeaders:
description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value'
properties.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom header
value:
type: string
description: The value of the custom header
required:
- name
- value
example:
- name: X-Custom-Header
value: custom-value
SipRegion:
description: Defines the SIP region to be used for the call.
type: string
default: US
enum:
- US
- Europe
- Canada
- Australia
- Middle East
example: Canada
MediaEncryption:
description: Defines whether media should be encrypted on the call. When set to `SRTP`, the call will use Secure
Real-time Transport Protocol for media encryption. When set to `DTLS`, the call will use DTLS for media encryption.
Only supported for SIP destinations.
example: disabled
default: disabled
type: string
enum:
- disabled
- SRTP
- DTLS
SuperviseCallSid:
description: The call control ID of the existing call to supervise. When provided, the created leg will be added
to the specified call in supervising mode. Status callbacks and action callbacks will NOT be sent for the supervising
leg.
example: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
type: string
SupervisingRole:
description: 'The supervising role for the new leg. Determines the audio behavior: barge (hear both sides), whisper
(only hear supervisor), monitor (hear both sides but supervisor muted). Default: barge'
example: monitor
type: string
enum:
- barge
- whisper
- monitor
default: barge
Timeout:
description: The number of seconds to wait for the called party to answer the call before the call is canceled.
The minimum value is 5 and the maximum value is 120. Default is 30 seconds.
example: '60'
type: integer
minimum: '5'
maximum: '120'
default: '30'
x-stainless-param: timeout_seconds
TimeLimit:
description: The maximum duration of the call in seconds. The minimum value is 30 and the maximum value is 14400
(4 hours). Default is 14400 seconds.
example: '3600'
type: integer
minimum: '30'
maximum: '14400'
default: '14400'
Texml:
description: TeXML to be used as instructions for the call. If provided, the call will execute these instructions
instead of fetching from the Url.
example: Hello
type: string
oneOf:
- title: With URL
required:
- Url
properties:
Texml:
not: {}
- title: With TeXML
required:
- Texml
properties:
Url:
not: {}
- title: Application Default
properties:
Url:
not: {}
Texml:
not: {}
example:
To: '+13121230000'
From: '+13120001234'
Url: https://www.example.com/texml.xml
StatusCallback: https://www.example.com/statuscallback-listener
ApplicationSid: example-app-sid
calls_SendRecordingUrl:
type: boolean
description: Whether to send RecordingUrl in webhooks.
example: 'false'
default: 'true'
campaigns_HTTPValidationError:
title: HTTPValidationError
type: object
properties:
detail:
title: Detail
type: array
items:
$ref: '#/components/schemas/ValidationError'
charges_Error:
required:
- code
- title
properties:
code:
type: string
format: integer
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
charges_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/charges_Error'
cloudflare-ip-list-sync_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
cloudflare-ip-list-sync_PaginationMeta:
title: PaginationMeta
required:
- page_number
- page_size
- total_pages
- total_results
type: object
properties:
page_number:
type: integer
page_size:
type: integer
total_pages:
type: integer
total_results:
type: integer
cohere_ar_stt_models:
type: string
enum:
- cohere/ar-stt
collections_Error:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
meta:
type: object
additionalProperties: true
properties:
pointer:
type: string
description: JSON Pointer to the request field that caused the error. Present on field-level validation and
conflict errors.
example: /slug
collections_Source:
type: object
properties:
id:
type: string
example: source_8vkvtcksnawvbnxq48yv2l06wx
record_type:
type: string
description: Identifies the record type. Always `ai_collection_source`.
example: ai_collection_source
collection_id:
type: string
format: uuid
example: 6a09ccbd-8f9b-4c3a-9b0e-2f1d3c4b5a6e
source_type:
$ref: '#/components/schemas/SourceType'
bucket_id:
type: string
description: The Telnyx Storage bucket name. Present only for `bucket` sources.
example: policy-docs
status:
type: string
example: ready
conference-participants_DialConferenceParticipantRequest:
type: object
title: Create Conference Participant Request
properties:
Beep:
description: Whether to play a notification beep to the conference when the participant enters and exits.
example: onExit
type: string
enum:
- 'true'
- 'false'
- onEnter
- onExit
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the call.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
type: string
enum:
- GET
- POST
StatusCallbackEvent:
description: 'The changes to the call''s state that should generate a call to `StatusCallback`. Can be: `initiated`,
`ringing`, `answered`, and `completed`. Separate multiple values with a space. The default value is `completed`.'
example: answered completed
type: string
To:
description: The phone number of the called party. Phone numbers are formatted with a `+` and country code.
example: '+16175551212'
type: string
From:
description: The phone number of the party that initiated the call. Phone numbers are formatted with a `+` and country
code.
example: '+16175551212'
type: string
Timeout:
description: The number of seconds that we should allow the phone to ring before assuming there is no answer. Can
be an integer between 5 and 120, inclusive. The default value is 30.
example: '30'
type: integer
x-stainless-param: timeout_seconds
Muted:
description: Whether the participant should be muted.
example: 'true'
type: boolean
StartConferenceOnEnter:
description: Whether to start the conference when the participant enters. Defaults to `true`.
example: 'false'
type: boolean
EndConferenceOnExit:
description: Whether to end the conference when the participant leaves. Defaults to `false`.
example: 'true'
type: boolean
Label:
description: A unique label for the participant that will be added to the conference. The label can be used to reference
the participant for updates via the TeXML REST API.
example: customer
type: string
EarlyMedia:
description: Whether participant shall be bridged to conference before the participant answers (from early media
if available). Defaults to `false`.
example: 'true'
type: boolean
default: 'false'
ConferenceStatusCallback:
description: The URL the conference callbacks will be sent to.
example: https://example.com/conference_status_callback
type: string
ConferenceStatusCallbackMethod:
description: HTTP request type used for `ConferenceStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
ConferenceStatusCallbackEvent:
description: 'The changes to the conference''s state that should generate a call to `ConferenceStatusCallback`.
Can be: `start`, `end`, `join` and `leave`. Separate multiple values with a space. By default no callbacks are
sent.'
example: start end join leave
type: string
WaitUrl:
description: The URL to call for an audio file to play while the participant is waiting for the conference to start.
example: https://www.example.com/wait_music.mp3
type: string
MaxParticipants:
description: The maximum number of participants in the conference. Can be a positive integer from 2 to 800. The
default value is 250.
example: '30'
type: integer
Coaching:
description: Whether the participant is coaching another call. When `true`, `CallSidToCoach` has to be given.
example: 'false'
type: boolean
CallSidToCoach:
description: The SID of the participant who is being coached. The participant being coached is the only participant
who can hear the participant who is coaching.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
type: string
CallerId:
description: To be used as the caller id name (SIP From Display Name) presented to the destination (`To` number).
The string should have a maximum of 128 characters, containing only letters, numbers, spaces, and `-_~!.+` special
characters. If ommited, the display name will be the same as the number in the `From` field.
example: Info
type: string
TimeLimit:
description: The maximum duration of the call in seconds.
example: '30'
type: integer
MachineDetection:
description: Whether to detect if a human or an answering machine picked up the call. Use `Enable` if you would
like to ne notified as soon as the called party is identified. Use `DetectMessageEnd`, if you would like to leave
a message on an answering machine.
example: Enable
type: string
enum:
- Enable
- DetectMessageEnd
MachineDetectionTimeout:
description: How long answering machine detection should go on for before sending an `Unknown` result. Given in
milliseconds.
example: '1000'
type: integer
MachineDetectionSpeechThreshold:
description: Maximum threshold of a human greeting. If greeting longer than this value, considered machine. Ignored
when `premium` detection is used.
example: '2000'
default: '3500'
type: integer
MachineDetectionSpeechEndThreshold:
description: Silence duration threshold after a greeting message or voice for it be considered human. Ignored when
`premium` detection is used.
example: '2000'
default: '800'
type: integer
MachineDetectionSilenceTimeout:
description: If initial silence duration is greater than this value, consider it a machine. Ignored when `premium`
detection is used.
example: '2000'
default: '3500'
type: integer
AmdStatusCallback:
description: The URL the result of answering machine detection will be sent to.
example: https://www.example.com/amd_result
type: string
AmdStatusCallbackMethod:
description: HTTP request type used for `AmdStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
ApplicationSid:
description: The SID of the TeXML application that will handle the new participant's call. Required unless joining
an existing conference by its ConferenceSid.
example: '1846572522338780702'
type: string
CancelPlaybackOnMachineDetection:
description: Whether to cancel ongoing playback on `machine` detection. Defaults to `true`.
default: 'true'
example: 'false'
type: boolean
CancelPlaybackOnDetectMessageEnd:
description: Whether to cancel ongoing playback on `greeting ended` detection. Defaults to `true`.
default: 'true'
example: 'false'
type: boolean
PreferredCodecs:
description: The list of comma-separated codecs to be offered on a call.
example: PCMA,PCMU
type: string
Record:
description: Whether to record the entire participant's call leg. Defaults to `false`.
example: 'false'
type: boolean
RecordingChannels:
description: The number of channels in the final recording. Defaults to `mono`.
example: dual
type: string
enum:
- mono
- dual
RecordingStatusCallback:
description: The URL the recording callbacks will be sent to.
example: https://example.com/recording_status_callback
type: string
RecordingStatusCallbackMethod:
description: HTTP request type used for `RecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
RecordingStatusCallbackEvent:
description: 'The changes to the recording''s state that should generate a call to `RecoridngStatusCallback`. Can
be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.'
example: in-progress completed absent
type: string
RecordingTrack:
description: The audio track to record for the call. The default is `both`.
example: inbound
type: string
enum:
- inbound
- outbound
- both
SipAuthPassword:
description: The password to use for SIP authentication.
example: '1234'
type: string
SipAuthUsername:
description: The username to use for SIP authentication.
example: user
type: string
Trim:
description: Whether to trim any leading and trailing silence from the recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
ConferenceRecord:
description: Whether to record the conference the participant is joining. Defualts to `do-not-record`. The boolean
values `true` and `false` are synonymous with `record-from-start` and `do-not-record` respectively.
example: record-from-start
type: string
enum:
- 'true'
- 'false'
- record-from-start
- do-not-record
ConferenceRecordingStatusCallback:
description: The URL the conference recording callbacks will be sent to.
example: https://example.com/conference_recording_status_callback
type: string
ConferenceRecordingStatusCallbackMethod:
description: HTTP request type used for `ConferenceRecordingStatusCallback`. Defaults to `POST`.
example: GET
type: string
enum:
- GET
- POST
ConferenceRecordingStatusCallbackEvent:
description: 'The changes to the conference recording''s state that should generate a call to `RecoridngStatusCallback`.
Can be: `in-progress`, `completed` and `absent`. Separate multiple values with a space. Defaults to `completed`.
`failed` and `absent` are synonymous.'
example: in-progress completed failed absent
type: string
ConferenceRecordingTimeout:
description: The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected.
The timer only starts when the speech is detected. Please note that the transcription is used to detect silence
and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite)
example: '5'
type: integer
default: '0'
ConferenceTrim:
description: Whether to trim any leading and trailing silence from the conference recording. Defaults to `trim-silence`.
example: trim-silence
type: string
enum:
- trim-silence
- do-not-trim
CustomHeaders:
description: Custom HTTP headers to be sent with the call. Each header should be an object with 'name' and 'value'
properties.
type: array
items:
type: object
properties:
name:
type: string
description: The name of the custom header
value:
type: string
description: The value of the custom header
required:
- name
- value
example:
- name: X-Custom-Header
value: custom-value
example:
To: '+12065550100'
From: '+12065550200'
conference-participants_NewParticipantResource:
type: object
title: New participant resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching: 'false'
conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
end_conference_on_exit: 'false'
hold: 'false'
muted: 'false'
status: completed
uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
call_sid:
type: string
description: The identifier of this participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching:
type: boolean
description: Whether the participant is coaching another call.
example: 'false'
coaching_call_sid:
type: string
description: The identifier of the coached participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
end_conference_on_exit:
type: boolean
description: Whether the conference ends when the participant leaves.
example: 'false'
hold:
type: boolean
description: Whether the participant is on hold.
example: 'false'
muted:
type: boolean
description: Whether the participant is muted.
example: 'false'
status:
type: string
description: The status of the participant's call in the conference.
enum:
- connecting
- connected
- completed
example: connected
uri:
type: string
description: The relative URI for this participant.
example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
conference_sid:
type: string
format: uuid
description: The unique identifier for the conference.
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
conference-participants_ParticipantResource:
type: object
title: Participant resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
api_version: v2/texml
call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
call_sid_legacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching: 'false'
conference_sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
end_conference_on_exit: 'false'
hold: 'false'
muted: 'false'
status: completed
uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
api_version:
type: string
description: The version of the API that was used to make the request.
example: v2/texml
call_sid:
type: string
description: The identifier of this participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
call_sid_legacy:
type: string
description: The identifier of this participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching:
type: boolean
description: Whether the participant is coaching another call.
example: 'false'
coaching_call_sid:
type: string
description: The identifier of the coached participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
coaching_call_sid_legacy:
type: string
description: The identifier of the coached participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
end_conference_on_exit:
type: boolean
description: Whether the conference ends when the participant leaves.
example: 'false'
hold:
type: boolean
description: Whether the participant is on hold.
example: 'false'
muted:
type: boolean
description: Whether the participant is muted.
example: 'false'
status:
type: string
description: The status of the participant's call in the conference.
enum:
- connecting
- connected
- completed
example: connected
uri:
type: string
description: The relative URI for this participant.
example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants/v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ.json
conference_sid:
type: string
format: uuid
description: The unique identifier for the conference.
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
conference-participants_ParticipantResourceIndex:
type: object
title: Multiple participant resources
example:
participants: []
end: '0'
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20
page: '0'
page_size: '20'
start: '0'
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20
properties:
participants:
type: array
items:
$ref: '#/components/schemas/conference-participants_ParticipantResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: '19'
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?page=0&pagesize=20
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: '0'
page_size:
type: integer
description: The number of items on the page
example: '20'
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: '0'
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Participants.json?Page=0&PageSize=1
conferences_ConferenceResource:
type: object
title: Conference resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
api_version: v2/texml
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
friendly_name: weekly_review_call
region: dc2
sid: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
status: in-progress
subresource_uris:
participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json
recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json
uri: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
api_version:
type: string
description: The version of the API that was used to make the request.
example: v2/texml
call_sid_ending_conference:
type: string
description: Caller ID, if present.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
friendly_name:
type: string
description: A string that you assigned to describe this conference room.
example: weekly_review_call
reason_conference_ended:
type: string
description: The reason why a conference ended. When a conference is in progress, will be null.
enum:
- participant-with-end-conference-on-exit-left
- last-participant-left
- conference-ended-via-api
- time-exceeded
example: time-exceeded
region:
type: string
description: A string representing the region where the conference is hosted.
example: dc2
sid:
type: string
description: The unique identifier of the conference.
example: cd5a70f4-759b-4d5e-9c06-88c00f16f3c1
status:
type: string
description: The status of this conference.
enum:
- init
- in-progress
- completed
example: in-progress
subresource_uris:
type: object
description: A list of related resources identified by their relative URIs.
example:
participants: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Participants.json
recordings: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1/Recordings.json
additionalProperties: 'true'
uri:
type: string
description: The relative URI for this conference.
example: /v2/texml/Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Conferences/cd5a70f4-759b-4d5e-9c06-88c00f16f3c1.json
conferences_ConferenceResourceIndex:
type: object
title: Multiple conference resources
example:
conferences: []
end: '0'
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
page: '0'
page_size: '1'
start: '0'
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
properties:
conferences:
type: array
items:
$ref: '#/components/schemas/conferences_ConferenceResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: '19'
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: '0'
page_size:
type: integer
description: The number of items on the page
example: '20'
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: '0'
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences.json?Page=0&PageSize=1
connections_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
connections_OutboundVoiceProfileId:
title: Outbound Voice Profile ID
type: string
description: Identifies the associated outbound voice profile.
example: '1293384261075731499'
x-format: int64
connections_PaginationMeta:
title: Pagination Meta
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
country_code:
type: string
description: The two-character (ISO 3166-1 alpha-2) country code of the address.
example: US
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
customer_service_record_ResourceNotFoundError:
allOf:
- $ref: '#/components/schemas/GenericError'
- properties:
code:
example: '10005'
type: string
title:
example: Resource not found
type: string
detail:
example: The requested resource or URL could not be found.
type: string
meta:
type: object
properties:
url:
type: string
example: https://developers.telnyx.com/docs/overview/errors/10005
type: object
customer_service_record_UnprocessableEntityError:
allOf:
- $ref: '#/components/schemas/GenericError'
- properties:
code:
example: '10002'
type: string
title:
example: Invalid phone number
type: string
detail:
example: The phone number is invalid.
type: string
source:
type: object
properties:
pointer:
type: string
example: /phone_numbers
meta:
type: object
properties:
url:
type: string
example: https://developers.telnyx.com/docs/overview/errors/10002
type: object
deepgram_models:
type: string
enum:
- deepgram/nova-2
- deepgram/nova-3
detail-records_Error:
type: object
properties:
code:
type: string
example: '10011'
title:
type: string
example: Bad Request
detail:
type: string
example: No matching record type was found matching given record type wirelessxx
detail-records_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/detail-records_Error'
detail-records_PaginationMeta:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
documents_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
edge-compute_Error:
type: object
properties:
code:
type: string
example: '10005'
detail:
type: string
example: The requested function does not exist or you don't have access to it
meta:
$ref: '#/components/schemas/ErrorMeta'
source:
$ref: '#/components/schemas/ErrorSource'
title:
type: string
example: Function not found
edge-compute_PaginationMeta:
type: object
properties:
page_number:
type: integer
example: 1
page_size:
type: integer
example: 20
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 52
email_CursorPaginationMeta:
type: object
required:
- page_size
- has_next
- has_previous
properties:
page_size:
type: integer
minimum: 1
next_cursor:
type: string
nullable: true
description: Opaque cursor to fetch the next page
previous_cursor:
type: string
nullable: true
description: Opaque cursor to fetch the previous page
has_next:
type: boolean
has_previous:
type: boolean
email_Error:
type: object
required:
- code
- title
- detail
properties:
code:
type: string
enum:
- '10001'
- '10015'
- '500'
- '10007'
- '10008'
- '10020'
- '40901'
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
email_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorObject'
suppressed:
type: array
description: Present when every recipient is suppressed, so the request is rejected and no message is created.
items:
$ref: '#/components/schemas/SuppressedRecipient'
required:
- errors
email_PaginationMeta:
type: object
properties:
page_size:
type: integer
minimum: 1
maximum: 100
page_cursor:
type: string
description: Cursor for the next page, when more results are available.
required:
- page_size
email_Source:
type: string
enum:
- feedback
- manual
- import
- system
emergency_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
extended_address:
type: string
description: Additional street address information about the address such as, but not limited to, unit number or apartment
number.
example: 14th Floor
external-voice-integrations_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
external-voice-integrations_IntId:
title: Int ID
type: string
description: Uniquely identifies the resource.
example: '1293384261075731499'
x-format: int64
external-voice-integrations_OutboundVoiceProfileId:
title: Outbound Voice Profile ID
type: string
description: Identifies the associated outbound voice profile.
example: '1293384261075731499'
x-format: int64
external-voice-integrations_PaginationMeta:
title: Pagination Meta
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
first_name:
type: string
description: The first name associated with the address. An address must have either a first last name or a business
name.
example: Alfred
functions-observability_Error:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
functions-observability_PaginationMeta:
type: object
properties:
total_pages:
type: integer
total_results:
type: integer
page_number:
type: integer
page_size:
type: integer
google_models:
type: string
enum:
- latest_long
- latest_short
- command_and_search
- phone_call
- video
- default
- medical_conversation
- medical_dictation
http:
description: HTTP request and response information.
properties:
request:
description: Request details.
properties:
url:
type: string
example: https://example.com/webhooks
headers:
$ref: '#/components/schemas/http_headers'
response:
description: Response details, optional.
type: object
properties:
status:
type: integer
example: 200
headers:
$ref: '#/components/schemas/http_headers'
body:
description: Raw response body, limited to 10kB.
type: string
http_headers:
description: List of headers, limited to 10kB.
type: array
example:
- - header_name
- header_value
items:
type: array
items:
type: string
humain_models:
type: string
enum:
- humain/realtime
inference-embedding_Assistant:
properties:
id:
type: string
name:
type: string
created_at:
type: string
format: date-time
version_id:
type: string
description: Identifier for the assistant version returned by version-aware assistant endpoints.
version_created_at:
type: string
format: date-time
description: Timestamp when this assistant version was created.
description:
type: string
model:
type: string
description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/openai-chat/get-available-models-openai-compatible)
to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field.
If neither `model` nor `external_llm` is provided, Telnyx applies the default model.
instructions:
type: string
description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
tools:
$ref: '#/components/schemas/AssistantTools'
description: 'The assistant''s tools. Responses merge the assistant''s shared Tools Library tools into this array
alongside inline tools, each flagged `shared: true`; inline tools carry `shared: false`. On update, a sent `tools`
array fully replaces the inline tools only — shared tools stay attached unless `tool_ids` changes. Each tool type
except `function`, `webhook`, and `client_side_tool` allows at most one instance per assistant across both sources.'
mcp_servers:
type: array
items:
$ref: '#/components/schemas/AssistantMCPServer'
default: []
description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them
by `id` here.
a2a_agents:
type: array
items:
$ref: '#/components/schemas/AssistantA2AAgent'
default: []
description: 'A2A agents this assistant can delegate to. Tools are not stored here: at the start of every conversation
each agent''s card is fetched and one tool is derived per skill the card advertises, named `a2a__`.
The following limits are not enforced when the assistant is saved, and anything past them is dropped when the
conversation starts: 64 agents per assistant, 64 skills per card, 128 derived tools per assistant, and a 6 second
budget for all card fetches combined. An agent whose card cannot be fetched costs the assistant that capability
for the conversation; it does not fail the call.'
greeting:
type: string
description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
Use an empty string to have the assistant wait for the user to speak first. Use the special value ``
to have the assistant generate the greeting based on the system instructions.
llm_api_key_ref:
type: string
description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier`
for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref`
instead. Warning: Free plans are unlikely to work with this integration.'
external_llm:
$ref: '#/components/schemas/ExternalLLM'
fallback_config:
$ref: '#/components/schemas/FallbackConfig'
voice_settings:
$ref: '#/components/schemas/inference-embedding_VoiceSettings'
avatar_settings:
anyOf:
- $ref: '#/components/schemas/AvatarSettings'
- type: 'null'
description: '**Beta:** Saved avatar configuration for supported realtime browser conversations. `null` means that
no avatar is configured.'
transcription:
$ref: '#/components/schemas/TranscriptionSettings'
telephony_settings:
$ref: '#/components/schemas/TelephonySettings'
messaging_settings:
$ref: '#/components/schemas/MessagingSettings'
enabled_features:
items:
$ref: '#/components/schemas/EnabledFeatures'
type: array
uniqueItems: true
title: Enabled Features
insight_settings:
$ref: '#/components/schemas/InsightSettings'
privacy_settings:
$ref: '#/components/schemas/PrivacySettings'
dynamic_variables_webhook_url:
type: string
description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of
the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level
`dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will
be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
for the full request/response format and timeout behavior.'
dynamic_variables_webhook_timeout_ms:
type: integer
minimum: 1
maximum: 10000
default: 1500
description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook
does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables).
dynamic_variables:
type: object
description: Map of dynamic variables and their values
additionalProperties: true
import_metadata:
$ref: '#/components/schemas/ImportMetadata'
widget_settings:
$ref: '#/components/schemas/WidgetSettings'
interruption_settings:
$ref: '#/components/schemas/inference-embedding_InterruptionSettings'
integrations:
type: array
items:
$ref: '#/components/schemas/AssistantIntegration'
default: []
description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`;
the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration
by `integration_id`.
observability_settings:
$ref: '#/components/schemas/Observability'
version_name:
type: string
maxLength: 50
default: New assistant
description: Human-readable name for the assistant version.
related_mission_ids:
type: array
items:
type: string
default: []
description: IDs of missions related to this assistant.
tags:
type: array
items:
type: string
default: []
description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.
post_conversation_settings:
$ref: '#/components/schemas/PostConversationSettings'
delegation_settings:
$ref: '#/components/schemas/DelegationSettings'
websocket_settings:
$ref: '#/components/schemas/WebsocketSettings'
conversation_flow:
$ref: '#/components/schemas/ConversationFlow'
type: object
required:
- id
- name
- created_at
- model
- instructions
inference-embedding_ErrorObject:
type: object
properties:
code:
type: string
description: Telnyx error code. Edge idempotency errors use 10015, 10027, or 10036; idempotency protection outages
use 10016; replay-cap 413s surface 10007. Fallback 404/500 responses from the framework may use string status
codes ('404', '500') instead.
enum:
- '10007'
- '10015'
- '10016'
- '10027'
- '10036'
- '404'
- '500'
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
required:
- code
- title
inference-embedding_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/inference-embedding_ErrorObject'
required:
- errors
inference-embedding_HangupTool:
properties:
type:
type: string
enum:
- hangup
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
hangup:
$ref: '#/components/schemas/HangupToolParams'
type: object
required:
- type
- hangup
title: HangupTool
inference-embedding_InterruptionSettings:
type: object
title: InterruptionSettings
description: Settings for interruptions and how the assistant decides the user has finished speaking. These timings
are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn
behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`,
`eot_timeout_ms`, `eager_eot_threshold`).
properties:
enable:
type: boolean
default: true
description: Whether users can interrupt the assistant while it is speaking.
disable_greeting_interruption:
type: boolean
description: When true, disables user interruptions while the assistant greeting is playing.
start_speaking_plan:
$ref: '#/components/schemas/StartSpeakingPlan'
interrupt_prediction_threshold:
type:
- number
- 'null'
default: 0.0
minimum: 0.0
maximum: 1.0
description: Interrupt-prediction sensitivity, from 0.0 to 1.0. Set to null or 0.0 to disable interrupt prediction.
inference-embedding_SummaryResponse:
properties:
summary:
type: string
title: Summary
type: object
required:
- summary
title: SummaryResponse
inference-embedding_TransferTool:
properties:
type:
type: string
enum:
- transfer
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
transfer:
$ref: '#/components/schemas/InferenceEmbeddingTransferToolParams'
type: object
required:
- type
- transfer
title: TransferTool
inference-embedding_VoiceSettings:
properties:
voice:
type: string
description: 'The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices)
via our voices API.
To use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref`
field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
for details. For Telnyx voices, use `Telnyx..` (e.g. Telnyx.KokoroTTS.af_heart). For Soniox
voices, use `Soniox.tts-rt-v2.` (e.g. Soniox.tts-rt-v2.Emma); every Soniox voice speaks all supported
languages.
The voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic
variables webhook, allowing you to select the voice dynamically per call.'
voice_speed:
type: number
default: 1
description: The speed of the voice in the range [0.6, 1.5]. 1.0 is the default speed. Larger numbers make the voice
faster, smaller numbers make it slower. Applies to Telnyx `Ultra` voices; values outside this range are rejected
by the synthesis engine. Soniox voices support a speed range of 0.7 to 1.3.
api_key_ref:
type: string
description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret)
that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.'
temperature:
type: number
default: 0.5
description: Determines how stable the voice is and the randomness between each generation. Lower values create
a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using
ElevenLabs.
similarity_boost:
type: number
default: 0.75
description: Determines how closely the AI should adhere to the original voice when attempting to replicate it.
Only applicable when using ElevenLabs.
use_speaker_boost:
type: boolean
default: true
description: Amplifies similarity to the original speaker voice. Increases computational load and latency slightly.
Only applicable when using ElevenLabs.
style:
type: number
default: 0
description: Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources
when set above 0. Only applicable when using ElevenLabs.
speed:
type: number
default: 1.0
description: Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than
1.0 accelerate it. Only applicable when using ElevenLabs.
language_boost:
type:
- string
- 'null'
description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null
(no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices.
enum:
- null
- auto
- Chinese
- Chinese,Yue
- English
- Arabic
- Russian
- Spanish
- French
- Portuguese
- German
- Turkish
- Dutch
- Ukrainian
- Vietnamese
- Indonesian
- Japanese
- Italian
- Korean
- Thai
- Polish
- Romanian
- Greek
- Czech
- Finnish
- Hindi
- Bulgarian
- Danish
- Hebrew
- Malay
- Persian
- Slovak
- Swedish
- Croatian
- Filipino
- Hungarian
- Norwegian
- Slovenian
- Catalan
- Nynorsk
- Tamil
- Afrikaans
default: null
expressive_mode:
type: boolean
default: false
description: Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio
tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices.
background_audio:
description: Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL.
If a media URL is chosen in the portal, customers can preview it before saving.
oneOf:
- type: object
properties:
type:
type: string
enum:
- predefined_media
description: Select from predefined media options.
value:
type: string
enum:
- silence
- office
default: silence
description: The predefined media to use. `silence` disables background audio.
volume:
type: number
minimum: 0.1
maximum: 1.0
multipleOf: 0.1
default: 1.0
description: Volume level for the predefined background audio. Supports values from 0.1 to 1.0 in 0.1 increments.
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- media_url
description: Provide a direct URL to an MP3 file. The audio will loop during the call.
value:
type: string
format: uri
description: HTTPS URL to an MP3 file.
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- media_name
description: Reference a previously uploaded media by its name from Telnyx Media Storage.
value:
type: string
description: The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage).
The audio will loop during the call.
required:
- type
- value
tool_call_audio:
description: Optional sound played to the caller while the assistant runs a tool (for example a webhook or MCP tool).
It replaces the background audio until the tool responds, then the background audio resumes. Defaults to null,
which plays no sound; send `null` on update to clear it. Not played in conference calls.
oneOf:
- type: object
properties:
type:
type: string
enum:
- predefined_media
description: Select from predefined media options.
value:
type: string
enum:
- typing
description: The predefined media to use. `typing` plays a keyboard typing sound.
volume:
type: number
minimum: 0.0
maximum: 1.0
multipleOf: 0.1
default: 0.5
description: Volume level for the predefined media. Supports values from 0.0 to 1.0 in 0.1 increments. `0.0`
plays no sound.
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- media_url
description: Provide a direct URL to an MP3 file. The audio loops while the tool runs.
value:
type: string
format: uri
description: HTTPS URL to an MP3 file.
required:
- type
- value
- type: 'null'
default: null
example:
type: predefined_media
value: typing
volume: 0.5
type: object
required:
- voice
inference-embedding_WebhookTool:
properties:
type:
type: string
enum:
- webhook
timeout_ms:
type: integer
default: 5000
maximum: 60000
description: The maximum number of milliseconds to wait for the webhook to respond before the tool call is aborted.
Set this at the tool level, as a sibling of `type` — a `timeout_ms` nested inside the `webhook` object is stored
but not applied, and the tool runs at this default instead. Applies when `webhook.async` is false.
shared:
type: boolean
description: 'Whether this tool comes from the shared Tools Library. Responses merge shared tools into `tools` with
`shared: true`; inline tools carry `shared: false`. Read-only: set by the server, not accepted in requests. When
updating an assistant, omit `shared: true` tools from the request `tools` array and manage them through `tool_ids`
instead — re-sending their definitions creates an inline duplicate (rejected with error code 10015 when the type
allows only one instance per assistant).'
readOnly: true
webhook:
$ref: '#/components/schemas/WebhookToolParams'
type: object
required:
- type
- webhook
title: WebhookTool
integration-secrets_Error:
properties:
code:
type: string
title: Telnyx error code
detail:
type: string
title: Error details
title:
type: string
title: Error title
type: object
required:
- detail
title: Error
integration-secrets_ErrorResponse:
properties:
errors:
items:
$ref: '#/components/schemas/integration-secrets_Error'
type: array
title: Errors
type: object
title: ErrorResponse
integration-secrets_Metadata:
properties:
page_size:
type: integer
title: Page Size
example: 25
page_number:
type: integer
title: Page Number
example: 1
total_pages:
type: integer
title: Total Pages
example: 10
total_results:
type: integer
title: Total Items
example: 250
required:
- page_size
- page_number
- total_pages
- total_results
type: object
title: Metadata
invoice_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
last_name:
type: string
description: The last name associated with the address. An address must have either a first last name or a business
name.
example: Foster
legacy_published_account_billing_usage_reports_CdrGetDetailReportResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CdrDetailedReqResponse'
meta:
$ref: '#/components/schemas/batch-csv_PaginationMeta'
legacy_published_account_billing_usage_reports_MdrGetDetailReportResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrDetailReportResponse'
meta:
$ref: '#/components/schemas/batch-csv_PaginationMeta'
legacy_published_account_billing_usage_reports_SourceResponse:
type: object
properties:
pointer:
type: string
description: A JSON Pointer [RFC6901] to the associated entity in the request document
example: /title
parameter:
type: string
description: a string indicating which URI query parameter caused the error
example: metrics
legacy_published_texml_siprec_TexmlCreateSiprecSessionRequestBody:
type: object
title: Create Siprec Session Request
properties:
ConnectorName:
description: The name of the connector to use for the SIPREC session.
example: my_connector
type: string
Name:
description: Name of the SIPREC session. May be used to stop the SIPREC session from TeXML instruction.
example: my_siprec_session
type: string
Track:
description: The track to be used for siprec session. Can be `both_tracks`, `inbound_track` or `outbound_track`.
Defaults to `both_tracks`.
example: both_tracks
type: string
enum:
- both_tracks
- inbound_track
- outbound_track
IncludeMetadataCustomHeaders:
description: When set, custom parameters will be added as metadata (recording.session.ExtensionParameters). Otherwise,
they’ll be added to sip headers.
example: 'true'
type: boolean
enum:
- 'true'
- 'false'
Secure:
description: Controls whether to encrypt media sent to your SRS using SRTP and TLS. When set you need to configure
SRS port in your connector to 5061.
example: 'true'
type: boolean
enum:
- 'true'
- 'false'
SessionTimeoutSecs:
description: Sets `Session-Expires` header to the INVITE. A reinvite is sent every half the value set. Usefull for
session keep alive. Minimum value is 90, set to 0 to disable.
example: '900'
type: integer
default: '1800'
SipTransport:
description: Specifies SIP transport protocol.
example: tcp
enum:
- udp
- tcp
- tls
type: string
default: udp
StatusCallback:
description: URL destination for Telnyx to send status callback events to for the siprec session.
example: https://www.example.com/callback
type: string
StatusCallbackMethod:
description: HTTP request type used for `StatusCallback`.
example: GET
type: string
enum:
- GET
- POST
locality:
type: string
description: The locality of the address. For US addresses, this corresponds to the city of the address.
example: Austin
machine-payments_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
source:
type: object
properties:
pointer:
type: string
required:
- errors
media-storage_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
media-streaming_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
meeting-sessions_ErrorResponse:
type: object
additionalProperties: false
required:
- error
properties:
error:
type: object
additionalProperties: false
required:
- code
- message
properties:
code:
type: string
message:
type: string
examples:
- error:
code: invalid_request
message: webhook_url is disabled
- error:
code: not_found
message: meeting session not found
- error:
code: unsupported_capability
message: avatar video is not supported on platform 'unknown'
- error:
code: internal_error
message: internal server error
messaging_AutorespConfigsResponseSchema:
title: AutorespConfigsResponseSchema
description: List of Auto-Response Settings
required:
- data
- meta
type: object
properties:
data:
title: Data
type: array
items:
$ref: '#/components/schemas/AutorespConfigSchema'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
messaging_CreateMessagingProfileRequest:
type: object
required:
- name
- whitelisted_destinations
properties:
name:
description: A user friendly name for the messaging profile.
type: string
whitelisted_destinations:
description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid
ISO 3166-1 alpha-2 country codes. If set to `["*"]` all destinations will be allowed.
type: array
items:
description: ISO 3166-1 alpha-2 country code.
type: string
pattern: ^[A-Z]{2}$
enabled:
description: Specifies whether the messaging profile is enabled or not.
type: boolean
default: true
webhook_url:
description: The URL where webhooks related to this messaging profile will be sent.
type:
- string
- 'null'
format: url
default: ''
webhook_failover_url:
description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary
URL fails.
type:
- string
- 'null'
format: url
default: ''
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.
type: string
enum:
- '1'
- '2'
- '2010-04-01'
default: '2'
number_pool_settings:
$ref: '#/components/schemas/NumberPoolSettings'
url_shortener_settings:
$ref: '#/components/schemas/UrlShortenerSettings'
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
daily_spend_limit:
description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.
type: string
pattern: ^[0-9]+(?:\.[0-9]+)?$
daily_spend_limit_enabled:
description: Whether to enforce the value configured by `daily_spend_limit`.
type: boolean
mms_fall_back_to_sms:
description: enables SMS fallback for MMS messages.
type: boolean
default: false
mms_transcoding:
description: enables automated resizing of MMS media.
type: boolean
default: false
mobile_only:
description: Send messages only to mobile phone numbers.
type: boolean
default: false
smart_encoding:
description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically
selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and
minimize costs.
type: boolean
default: false
features:
$ref: '#/components/schemas/MessagingProfileFeatures'
resource_group_id:
type:
- string
- 'null'
maxLength: 64
description: The resource group ID to associate with this messaging profile.
health_webhook_url:
type:
- string
- 'null'
format: url
description: A URL to receive health check webhooks for numbers in this profile.
ai_assistant_id:
type:
- string
- 'null'
maxLength: 64
description: The AI assistant ID to associate with this messaging profile.
example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000
example:
name: My name
enabled: true
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
webhook_api_version: '2'
number_pool_settings:
toll_free_weight: 10
long_code_weight: 1
skip_unhealthy: true
sticky_sender: false
geomatch: false
url_shortener_settings:
domain: example.ex
prefix: ''
replace_blacklist_only: true
send_webhooks: false
whitelisted_destinations:
- US
messaging_Error:
required:
- code
- title
properties:
code:
type: string
x-format: integer
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
messaging_Error_0b38e7044b:
required:
- code
- title
properties:
code:
type: string
x-format: integer
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
messaging_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/messaging_Error'
messaging_Errors_0b38e7044b:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
messaging_InboundMessage:
type: object
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
id:
type: string
format: uuid
description: Identifies the type of resource.
event_type:
type: string
example: message.received
enum:
- message.received
description: The type of event being delivered.
occurred_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the resource was created.
payload:
$ref: '#/components/schemas/InboundMessagePayload'
example:
record_type: event
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
event_type: message.received
occurred_at: '2019-01-23T18:10:02.574Z'
payload:
record_type: message
direction: inbound
id: 7ee4241c-f127-47e5-9c34-3aac291f8058
type: SMS
messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18665550001'
carrier: T-MOBILE USA, INC.
line_type: Wireless
to:
- phone_number: '+18445550001'
status: delivered
carrier: TELNYX LLC
line_type: VoIP
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
messaging_MessagingProfile:
type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
enum:
- messaging_profile
readOnly: true
id:
description: Identifies the type of resource.
type: string
format: uuid
readOnly: true
mms_fall_back_to_sms:
description: enables SMS fallback for MMS messages.
type: boolean
default: false
mms_transcoding:
description: enables automated resizing of MMS media.
type: boolean
default: false
name:
description: A user friendly name for the messaging profile.
type: string
enabled:
description: Specifies whether the messaging profile is enabled or not.
type: boolean
webhook_url:
description: The URL where webhooks related to this messaging profile will be sent.
type:
- string
- 'null'
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary
URL fails.
type:
- string
- 'null'
format: url
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.
type: string
enum:
- '1'
- '2'
- '2010-04-01'
health_webhook_url:
description: 'DEPRECATED: health check url service checking'
type:
- string
- 'null'
format: url
whitelisted_destinations:
description: Destinations to which the messaging profile is allowed to send. The elements in the list must be valid
ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed.
type: array
items:
description: ISO 3166-1 alpha-2 country code.
type: string
pattern: ^[A-Z]{2}$
created_at:
description: ISO 8601 formatted date indicating when the resource was created.
type: string
format: date-time
readOnly: true
updated_at:
description: ISO 8601 formatted date indicating when the resource was updated.
type: string
format: date-time
readOnly: true
v1_secret:
description: Secret used to authenticate with v1 endpoints.
type: string
number_pool_settings:
$ref: '#/components/schemas/NumberPoolSettings'
url_shortener_settings:
$ref: '#/components/schemas/UrlShortenerSettings'
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
daily_spend_limit:
description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.
type: string
pattern: ^[0-9]+(?:\.[0-9]+)?$
daily_spend_limit_enabled:
description: Whether to enforce the value configured by `daily_spend_limit`.
type: boolean
redaction_enabled:
description: Indicates whether message content redaction is enabled for this profile. When enabled, message text,
MMS media, and the counterparty phone number are redacted in message records and reporting. Requires organization
activation — contact support to enable. The field is only present in responses for organizations with redaction
access.
type: boolean
default: false
redaction_level:
description: 'Determines how much information is redacted for privacy or compliance purposes. Level 1: message records
and reporting are redacted, but inbound webhook payloads are not. Level 2 (default): message records, reporting,
and inbound webhook payloads are all redacted.'
type: integer
default: 2
mobile_only:
description: Send messages only to mobile phone numbers.
type: boolean
default: false
smart_encoding:
description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically
selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and
minimize costs.
type: boolean
default: false
features:
$ref: '#/components/schemas/MessagingProfileFeatures'
organization_id:
type: string
description: The organization that owns this messaging profile.
ai_assistant_id:
type:
- string
- 'null'
description: The AI assistant ID associated with this messaging profile.
example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000
resource_group_id:
type:
- string
- 'null'
description: The resource group ID associated with this messaging profile.
example:
record_type: messaging_profile
id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
name: Profile for Messages
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
enabled: true
webhook_api_version: '2'
whitelisted_destinations:
- US
created_at: '2019-01-23T18:10:02.574Z'
updated_at: '2019-01-23T18:10:02.574Z'
number_pool_settings:
toll_free_weight: 10
long_code_weight: 2
skip_unhealthy: false
sticky_sender: true
geomatch: false
url_shortener_settings:
domain: example.ex
prefix: cmpny
replace_blacklist_only: true
send_webhooks: false
v1_secret: rP1VamejkU2v0qIUxntqLW2c
health_webhook_url: null
mms_fall_back_to_sms: false
mms_transcoding: false
daily_spend_limit: '100.00'
daily_spend_limit_enabled: false
redaction_enabled: false
redaction_level: 2
mobile_only: false
features:
ai_opt_out_detection_enabled: true
messaging_OutboundMessagePayloadCancelled:
type: object
properties:
record_type:
type: string
example: message
enum:
- message
description: Identifies the type of the resource.
direction:
type: string
example: outbound
enum:
- outbound
description: The direction of the message. Inbound messages are sent to you whereas outbound messages are sent from
you.
id:
type: string
format: uuid
description: Identifies the type of resource.
type:
type: string
enum:
- SMS
- MMS
description: The type of message.
messaging_profile_id:
type: string
description: Unique identifier for a messaging profile.
organization_id:
type: string
format: uuid
description: The id of the organization the messaging profile belongs to.
from:
type: object
properties:
phone_number:
type: string
description: Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short code).
x-format: address
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
to:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
description: The delivery status of the message.
enum:
- scheduled
- queued
- sending
- sent
- cancelled
- expired
- sending_failed
- delivery_unconfirmed
- delivered
- delivery_failed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
cc:
type: array
items:
type: object
properties:
phone_number:
type: string
description: Receiving address (+E.164 formatted phone number or short code).
x-format: address
status:
type: string
description: The delivery status of the message.
enum:
- scheduled
- queued
- sending
- sent
- cancelled
- expired
- sending_failed
- delivery_unconfirmed
- delivered
- delivery_failed
carrier:
type: string
description: The carrier of the receiver.
line_type:
type: string
description: The line-type of the receiver.
enum:
- Wireline
- Wireless
- VoWiFi
- VoIP
- Pre-Paid Wireless
- ''
text:
type: string
description: 'Message body (i.e., content) as a non-empty string.
**Required for SMS**'
num_chars:
type: integer
description: The number of characters in the message text
subject:
type:
- string
- 'null'
description: Subject of multimedia message
media:
type: array
items:
type: object
properties:
url:
type: string
format: url
description: The url of the media requested to be sent.
content_type:
type:
- string
- 'null'
x-format: mime-type
description: The MIME type of the requested media.
sha256:
type:
- string
- 'null'
description: The SHA256 hash of the requested media.
size:
type:
- integer
- 'null'
description: The size of the requested media.
webhook_url:
type:
- string
- 'null'
format: url
description: The URL where webhooks related to this message will be sent.
webhook_failover_url:
type:
- string
- 'null'
format: url
description: The failover URL where webhooks related to this message will be sent if sending to the primary URL
fails.
encoding:
type: string
description: Encoding scheme used for the message body.
parts:
type: integer
minimum: 1
maximum: 10
description: Number of parts into which the message's body must be split.
tags:
type: array
description: Tags associated with the resource.
items:
type: string
cost:
type:
- object
- 'null'
properties:
amount:
type: string
description: The amount deducted from your account.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
cost_breakdown:
type:
- object
- 'null'
properties:
carrier_fee:
type: object
properties:
amount:
type: string
description: The carrier fee amount.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
rate:
type: object
properties:
amount:
type: string
description: The rate amount applied.
x-format: decimal
currency:
type: string
description: The ISO 4217 currency identifier.
x-format: iso4217
description: Detailed breakdown of the message cost components.
tcr_campaign_id:
type:
- string
- 'null'
description: The Campaign Registry (TCR) campaign ID associated with the message.
tcr_campaign_billable:
type: boolean
description: Indicates whether the TCR campaign is billable.
tcr_campaign_registered:
type:
- string
- 'null'
description: The registration status of the TCR campaign.
example: REGISTERED
received_at:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the message request was received.
sent_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was sent.
completed_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted date indicating when the message was finalized.
valid_until:
type:
- string
- 'null'
description: Message must be out of the queue by this time or else it will be discarded and marked as 'sending_failed'.
Once the message moves out of the queue, this field will be nulled
format: date-time
errors:
type: array
description: These errors may point at addressees when referring to unsuccessful/unconfirmed delivery statuses.
items:
$ref: '#/components/schemas/messaging_Error_0b38e7044b'
smart_encoding_applied:
type: boolean
description: Indicates whether smart encoding was applied to this message. When `true`, one or more Unicode characters
were automatically replaced with GSM-7 equivalents to reduce segment count and cost. The original message text
is preserved in webhooks.
example:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: SMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: cancelled
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0'
currency: USD
cost_breakdown: null
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
messaging_OutboundMessageResponse:
type: object
properties:
data:
$ref: '#/components/schemas/MessagingOutboundMessagePayload'
messaging_PaginationMeta:
type: object
required:
- total_pages
- total_results
- page_size
- page_number
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
messaging_PaginationMeta_0b38e7044b:
type: object
required:
- total_pages
- total_results
- page_size
- page_number
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
messaging_RCSAgentsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RCSAgent'
meta:
$ref: '#/components/schemas/messaging_PaginationMeta_0b38e7044b'
messaging_UpdateMessagingProfileRequest:
type: object
properties:
record_type:
description: Identifies the type of the resource.
type: string
enum:
- messaging_profile
readOnly: true
id:
description: Identifies the type of resource.
type: string
format: uuid
readOnly: true
name:
description: A user friendly name for the messaging profile.
type: string
enabled:
description: Specifies whether the messaging profile is enabled or not.
type: boolean
webhook_url:
description: The URL where webhooks related to this messaging profile will be sent.
type:
- string
- 'null'
format: url
webhook_failover_url:
description: The failover URL where webhooks related to this messaging profile will be sent if sending to the primary
URL fails.
type:
- string
- 'null'
format: url
webhook_api_version:
description: Determines which webhook format will be used, Telnyx API v1, v2, or a legacy 2010-04-01 format.
type: string
enum:
- '1'
- '2'
- '2010-04-01'
whitelisted_destinations:
description: 'Destinations to which the messaging profile is allowed to send. The elements in the list must be valid
ISO 3166-1 alpha-2 country codes. If set to `["*"]`, all destinations will be allowed.
This field is required if the messaging profile doesn''t have it defined yet.'
type: array
items:
description: ISO 3166-1 alpha-2 country code.
type: string
pattern: ^[A-Z]{2}$
created_at:
description: ISO 8601 formatted date indicating when the resource was created.
type: string
format: date-time
readOnly: true
updated_at:
description: ISO 8601 formatted date indicating when the resource was updated.
type: string
format: date-time
readOnly: true
v1_secret:
description: Secret used to authenticate with v1 endpoints.
type: string
number_pool_settings:
$ref: '#/components/schemas/NumberPoolSettings'
url_shortener_settings:
$ref: '#/components/schemas/UrlShortenerSettings'
alpha_sender:
description: The alphanumeric sender ID to use when sending to destinations that require an alphanumeric sender
ID.
type:
- string
- 'null'
pattern: ^[A-Za-z0-9 ]{1,11}$
daily_spend_limit:
description: The maximum amount of money (in USD) that can be spent by this profile before midnight UTC.
type: string
pattern: ^[0-9]+(?:\.[0-9]+)?$
daily_spend_limit_enabled:
description: Whether to enforce the value configured by `daily_spend_limit`.
type: boolean
mms_fall_back_to_sms:
description: enables SMS fallback for MMS messages.
type: boolean
default: false
mms_transcoding:
description: enables automated resizing of MMS media.
type: boolean
default: false
mobile_only:
description: Send messages only to mobile phone numbers.
type: boolean
default: false
smart_encoding:
description: Enables automatic character encoding optimization for SMS messages. When enabled, the system automatically
selects the most efficient encoding (GSM-7 or UCS-2) based on message content to maximize character limits and
minimize costs.
type: boolean
default: false
features:
$ref: '#/components/schemas/MessagingProfileFeatures'
ai_assistant_id:
description: The ID of the AI assistant associated with this messaging profile.
type:
- string
- 'null'
example: ai_assistant-a80a9d4a-728c-4593-852c-2e93ad890000
redaction_enabled:
description: Set to true to enable message content redaction on this profile, or false to disable it. Ignored if
the organization is not on the redaction allowlist. See the [Message Redaction guide](/docs/messaging/messages/message-redaction)
for what is redacted.
type: boolean
default: false
redaction_level:
description: 'The redaction level to apply when redaction is enabled. 1: redact message records and reporting only.
2 (default): also redact inbound webhook payloads. See the [Message Redaction guide](/docs/messaging/messages/message-redaction).'
type: integer
default: 2
example:
name: Updated Profile for Messages
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
enabled: true
webhook_api_version: '2'
whitelisted_destinations:
- US
number_pool_settings:
toll_free_weight: 10
long_code_weight: 2
skip_unhealthy: false
sticky_sender: true
geomatch: false
url_shortener_settings:
domain: example.ex
prefix: cmpny
replace_blacklist_only: true
send_webhooks: false
v1_secret: rP1VamejkU2v0qIUxntqLW2c
messaging_WhatsappContact:
type: object
properties:
addresses:
type: array
items:
type: object
properties:
street:
type: string
city:
type: string
state:
type: string
zip:
type: string
country:
type: string
country_code:
type: string
type:
type: string
birthday:
type: string
emails:
type: array
items:
type: object
properties:
email:
type: string
type:
type: string
name:
type: object
properties:
formatted_name:
type: string
description: contact's full name as displayed in the message
first_name:
type: string
last_name:
type: string
middle_name:
type: string
suffix:
type: string
prefix:
type: string
required:
- formatted_name
org:
type: object
properties:
company:
type: string
department:
type: string
title:
type: string
phones:
type: array
items:
type: object
properties:
phone:
type: string
x-format: E+164
type:
type: string
wa_id:
type: string
urls:
type: array
items:
type: object
properties:
url:
type: string
format: url
type:
type: string
messaging_WhatsappInteractive:
type: object
properties:
type:
type: string
enum:
- cta_url
- list
- carousel
- button
- location_request_message
- flow
action:
type: object
properties:
name:
type: string
button:
type: string
buttons:
type: array
items:
type: object
properties:
type:
type: string
enum:
- reply
reply:
type: object
properties:
title:
type: string
description: button label, 20 character maximum
id:
type: string
description: unique identifier for each button, 256 character maximum
catalog_id:
type: string
product_retailer_id:
type: string
sections:
type: array
items:
type: object
properties:
product_items:
type: array
items:
type: object
properties:
product_retailer_id:
type: string
rows:
type: array
items:
type: object
properties:
id:
type: string
description: arbitrary string identifying the row, 200 character maximum
title:
type: string
description: row title, 24 character maximum
description:
type: string
description: row description, 72 character maximum
title:
type: string
description: section title, 24 character maximum
mode:
type: string
parameters:
type: object
properties:
display_text:
type: string
description: button label text, 20 character maximum
url:
type: string
format: url
description: button URL to load when tapped by the user
flow_message_version:
type: string
description: flow message version, must be 3. Required for flow messages
flow_token:
type: string
description: business-generated identifier for the flow session. Returned in the flow response for correlation
flow_id:
type: string
description: ID of the flow to open. Provide exactly one of flow_id or flow_name
flow_name:
type: string
description: name of the flow to open. Provide exactly one of flow_id or flow_name
flow_cta:
type: string
description: text of the button that opens the flow, 1-20 characters, no emoji. Required for flow messages
flow_action:
type: string
enum:
- navigate
- data_exchange
description: how the flow starts. navigate opens the screen in flow_action_payload; data_exchange requests
the first screen from the business's flow endpoint. Defaults to navigate
flow_action_payload:
type: object
description: optional initial screen and data. When omitted, the flow opens on its first entry screen. Must
be omitted when flow_action is data_exchange
properties:
screen:
type: string
description: ID of the first screen to show
data:
type: object
description: input data for the first screen. Must be a non-empty object when provided
mode:
type: string
enum:
- draft
- published
description: use draft to test an unpublished flow. Defaults to published
cards:
type: array
items:
type: object
properties:
card_index:
type: integer
description: unique index for each card (0-9)
type:
type: string
enum:
- cta_url
header:
type: object
properties:
type:
type: string
enum:
- image
- video
image:
$ref: '#/components/schemas/WhatsappMedia'
video:
$ref: '#/components/schemas/WhatsappMedia'
body:
type: object
properties:
text:
type: string
description: 160 character maximum, up to 2 line breaks
action:
type: object
properties:
product_retailer_id:
type: string
description: the unique retailer ID of the product
catalog_id:
type: string
description: the unique ID of the catalog
body:
type: object
properties:
text:
type: string
description: body text, 1024 character maximum
footer:
type: object
properties:
text:
type: string
description: footer text, 60 character maximum
header:
type: object
properties:
type:
type: string
enum:
- document
- image
- text
- video
description: header type. Required when a header is provided; the matching document, image, text, or video field
must be set
document:
$ref: '#/components/schemas/WhatsappMedia'
image:
$ref: '#/components/schemas/WhatsappMedia'
video:
$ref: '#/components/schemas/WhatsappMedia'
text:
type: string
description: header text, 60 character maximum
sub_text:
type: string
required:
- type
messaging_WhatsappMessage:
required:
- from
- to
- whatsapp_message
type: object
properties:
from:
type: string
description: Phone number in +E.164 format associated with Whatsapp account
example: '+13125551234'
to:
type: string
description: Recipient phone number in +E.164 format, or the business-scoped user ID (BSUID) of a WhatsApp user
who hides their phone number, for example `US.13491208655302741918`. Authentication templates cannot be sent to
a BSUID.
example: '+13125551234'
whatsapp_message:
$ref: '#/components/schemas/messaging_WhatsappMessageContent'
type:
type: string
description: Message type - must be set to "WHATSAPP"
example: WHATSAPP
enum:
- WHATSAPP
webhook_url:
description: The URL where webhooks related to this message will be sent.
type: string
format: url
messaging_profile_id:
description: Messaging profile ID - required if the 'from' number is not SMS-enabled
type: string
format: uuid
messaging_WhatsappMessageContent:
type: object
properties:
audio:
$ref: '#/components/schemas/WhatsappMedia'
document:
$ref: '#/components/schemas/WhatsappMedia'
image:
$ref: '#/components/schemas/WhatsappMedia'
sticker:
$ref: '#/components/schemas/WhatsappMedia'
video:
$ref: '#/components/schemas/WhatsappMedia'
interactive:
$ref: '#/components/schemas/messaging_WhatsappInteractive'
location:
$ref: '#/components/schemas/WhatsappLocation'
contacts:
type: array
items:
$ref: '#/components/schemas/messaging_WhatsappContact'
reaction:
$ref: '#/components/schemas/WhatsappReaction'
biz_opaque_callback_data:
type: string
description: custom data to return with status update
type:
type: string
enum:
- audio
- document
- image
- sticker
- video
- interactive
- location
- template
- reaction
- contacts
- text
text:
type: object
description: Text message content. Can only be sent within a 24-hour customer service window.
properties:
body:
type: string
description: The text message body.
example: Hello from Telnyx!
preview_url:
type: boolean
description: Whether to show a URL preview in the message.
default: false
required:
- body
template:
type: object
description: Template message object. Provide either template_id or name + language to identify the template.
properties:
template_id:
type: string
description: Telnyx template ID (the id field from template list/get responses). When provided, name and language
are resolved automatically.
example: 019cd44b-3a1c-781b-956e-bd33e9fd2ac6
name:
type: string
description: Template name as registered with Meta. Required unless template_id is provided.
example: order_confirmation
language:
type: object
description: Template language. Required unless template_id is provided.
properties:
policy:
type: string
example: deterministic
code:
type: string
description: Language code (e.g. en_US)
example: en_US
required:
- code
components:
type: array
description: Template parameter values for header, body, and button components.
items:
type: object
properties:
type:
type: string
enum:
- header
- body
- button
sub_type:
type: string
enum:
- quick_reply
- url
- flow
index:
type: integer
description: Button index (required for button components)
parameters:
type: array
items:
type: object
properties:
type:
type: string
enum:
- text
- image
- video
- document
- currency
- date_time
- action
text:
type: string
action:
type: object
description: Flow button parameters. Used with type action on a flow button component
properties:
flow_token:
type: string
description: business-generated identifier for the flow session. Returned in the flow response
for correlation
flow_action_data:
type: object
description: input data for the first screen of the flow
messaging_toll_free_verification_EntityType:
title: EntityType
type: string
enum:
- SOLE_PROPRIETOR
- PRIVATE_PROFIT
- PUBLIC_PROFIT
- NON_PROFIT
- GOVERNMENT
description: Business entity classification
messaging_toll_free_verification_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
messaging_toll_free_verification_TFVerificationRequest:
title: VerificationRequest
required:
- businessName
- corporateWebsite
- businessAddr1
- businessCity
- businessState
- businessZip
- businessContactFirstName
- businessContactLastName
- businessContactEmail
- businessContactPhone
- messageVolume
- phoneNumbers
- useCase
- useCaseSummary
- productionMessageContent
- optInWorkflow
- optInWorkflowImageURLs
- additionalInformation
type: object
properties:
businessName:
title: Businessname
type: string
maxLength: 500
description: Name of the business; there are no specific formatting requirements
example: Telnyx LLC
corporateWebsite:
title: Corporatewebsite
type: string
maxLength: 500
description: A URL, including the scheme, pointing to the corporate website
example: http://example.com
businessAddr1:
title: Businessaddr1
type: string
maxLength: 500
description: Line 1 of the business address
example: 600 Congress Avenue
businessAddr2:
title: Businessaddr2
type: string
maxLength: 500
description: Line 2 of the business address
example: 14th Floor
businessCity:
title: Businesscity
type: string
maxLength: 500
description: The city of the business address; the first letter should be capitalized
example: Austin
businessState:
title: Businessstate
type: string
maxLength: 500
description: The full name of the state (not the 2 letter code) of the business address; the first letter should
be capitalized
example: Texas
businessZip:
title: Businesszip
type: string
maxLength: 500
description: The ZIP code of the business address
example: '78701'
businessContactFirstName:
title: Businesscontactfirstname
type: string
maxLength: 500
description: First name of the business contact; there are no specific requirements on formatting
example: John
businessContactLastName:
title: Businesscontactlastname
type: string
maxLength: 500
description: Last name of the business contact; there are no specific requirements on formatting
example: Doe
businessContactEmail:
title: Businesscontactemail
type: string
maxLength: 500
description: The email address of the business contact
example: email@example.com
businessContactPhone:
title: Businesscontactphone
type: string
maxLength: 500
description: The phone number of the business contact in E.164 format
example: '+18005550100'
messageVolume:
allOf:
- $ref: '#/components/schemas/Volume'
description: Estimated monthly volume of messages from the given phone numbers
example: 100,000
phoneNumbers:
title: Phonenumbers
type: array
minItems: 1
items:
$ref: '#/components/schemas/TFPhoneNumber'
description: The phone numbers to request the verification of
example:
- phoneNumber: '+18773554398'
- phoneNumber: '+18773554399'
useCase:
allOf:
- $ref: '#/components/schemas/UseCaseCategories'
description: Machine-readable use-case for the phone numbers
example: 2FA
useCaseSummary:
title: Usecasesummary
type: string
maxLength: 500
description: Human-readable summary of the desired use-case
example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to
sign into the portal
productionMessageContent:
title: Productionmessagecontent
type: string
maxLength: 1000
description: An example of a message that will be sent from the given phone numbers
example: Your Telnyx OTP is XXXX
optInWorkflow:
title: Optinworkflow
type: string
maxLength: 500
description: Human-readable description of how end users will opt into receiving messages from the given phone numbers
example: User signs into the Telnyx portal, enters a number and is prompted to select whether they want to use 2FA
verification for security purposes. If they've opted in a confirmation message is sent out to the handset
optInWorkflowImageURLs:
title: Optinworkflowimageurls
minItems: 1
type: array
items:
$ref: '#/components/schemas/Url'
description: Images showing the opt-in workflow
example:
- url: https://telnyx.com/sign-up
- url: https://telnyx.com/company/data-privacy
additionalInformation:
title: Additionalinformation
type: string
maxLength: 500
description: Any additional information
isvReseller:
title: Isvreseller
type:
- string
- 'null'
maxLength: 500
description: ISV name
webhookUrl:
title: Webhookurl
type: string
maxLength: 500
description: URL that should receive webhooks relating to this verification request
example: http://example-webhook.com
businessRegistrationNumber:
title: Businessregistrationnumber
type:
- string
- 'null'
maxLength: 500
description: Official business registration number (e.g., Employer Identification Number (EIN) in the U.S.). Required
from January 2026.
example: 12-3456789
businessRegistrationType:
title: Businessregistrationtype
type:
- string
- 'null'
maxLength: 500
description: Type of business registration being provided. Required from January 2026.
example: EIN
businessRegistrationCountry:
title: Businessregistrationcountry
type:
- string
- 'null'
maxLength: 2
pattern: ^[A-Z]{2}$
description: ISO 3166-1 alpha-2 country code of the issuing business authority. Must be exactly 2 letters. Automatically
converted to uppercase. Required from January 2026.
example: US
doingBusinessAs:
title: Doingbusinessas
type:
- string
- 'null'
maxLength: 500
description: Doing Business As (DBA) name if different from legal name
example: Acme Services
entityType:
anyOf:
- $ref: '#/components/schemas/messaging_toll_free_verification_EntityType'
- type: 'null'
description: Business entity classification. Must be one of the 5 valid enum values.
optInConfirmationResponse:
title: Optinconfirmationresponse
type:
- string
- 'null'
maxLength: 500
description: Message sent to users confirming their opt-in to receive messages
example: You have successfully opted in to receive messages from Acme Corp
helpMessageResponse:
title: Helpmessageresponse
type:
- string
- 'null'
maxLength: 500
description: The message returned when users text 'HELP'
example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com'
privacyPolicyURL:
title: Privacypolicyurl
type:
- string
- 'null'
maxLength: 500
description: URL pointing to the business's privacy policy. Plain string, no URL format validation.
example: https://example.com/privacy
termsAndConditionURL:
title: Termsandconditionurl
type:
- string
- 'null'
maxLength: 500
description: URL pointing to the business's terms and conditions. Plain string, no URL format validation.
example: https://example.com/terms
ageGatedContent:
title: Agegatedcontent
type: boolean
default: false
description: Indicates if messaging content requires age gating (e.g., 18+). Defaults to false if not provided.
optInKeywords:
title: Optinkeywords
type:
- string
- 'null'
maxLength: 500
description: Keywords used to collect and process consumer opt-ins
example: START, YES, SUBSCRIBE
campaignVerifyAuthorizationToken:
title: Campaignverifyauthorizationtoken
type:
- string
- 'null'
maxLength: 500
description: Campaign Verify Authorization Token required for Political use case submissions starting February 17,
2026. This token is validated by Zipwhip and must be provided for all Political use case verifications after the
deadline.
example: cv_token_abc123xyz
description: The body of a tollfree verification request
messaging_toll_free_verification_VerificationRequestEgress:
title: VerificationRequestEgress
required:
- businessName
- corporateWebsite
- businessAddr1
- businessCity
- businessState
- businessZip
- businessContactFirstName
- businessContactLastName
- businessContactEmail
- businessContactPhone
- messageVolume
- phoneNumbers
- useCase
- useCaseSummary
- productionMessageContent
- optInWorkflow
- optInWorkflowImageURLs
- additionalInformation
- id
- verificationRequestId
type: object
properties:
businessName:
title: Businessname
type: string
example: Telnyx LLC
corporateWebsite:
title: Corporatewebsite
type: string
example: http://example.com
businessAddr1:
title: Businessaddr1
type: string
example: 600 Congress Avenue
businessAddr2:
title: Businessaddr2
type: string
example: 14th Floor
businessCity:
title: Businesscity
type: string
example: Austin
businessState:
title: Businessstate
type: string
example: Texas
businessZip:
title: Businesszip
type: string
example: '78701'
businessContactFirstName:
title: Businesscontactfirstname
type: string
example: John
businessContactLastName:
title: Businesscontactlastname
type: string
example: Doe
businessContactEmail:
title: Businesscontactemail
type: string
example: email@example.com
businessContactPhone:
title: Businesscontactphone
type: string
example: '+18005550100'
messageVolume:
allOf:
- $ref: '#/components/schemas/Volume'
description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000;
5,000,000; 10,000,000+'
example: 100,000
phoneNumbers:
title: Phonenumbers
type: array
items:
$ref: '#/components/schemas/TFPhoneNumber'
example:
- phoneNumber: '+18773554398'
- phoneNumber: '+18773554399'
useCase:
allOf:
- $ref: '#/components/schemas/UseCaseCategories'
example: 2FA
useCaseSummary:
title: Usecasesummary
type: string
example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to
sign into the portal
productionMessageContent:
title: Productionmessagecontent
type: string
example: Your Telnyx OTP is XXXX
optInWorkflow:
title: Optinworkflow
type: string
example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA
verification for security purposes. If they've opted in a confirmation message is sent out to the handset
optInWorkflowImageURLs:
title: Optinworkflowimageurls
type: array
items:
$ref: '#/components/schemas/Url'
example:
- url: https://telnyx.com/sign-up
- url: https://telnyx.com/company/data-privacy
additionalInformation:
title: Additionalinformation
type: string
example: This is for security purposes, blah blah blah
isvReseller:
title: Isvreseller
type: string
example: 'Yes'
webhookUrl:
title: Webhookurl
type: string
example: http://example-webhook.com
businessRegistrationNumber:
title: Businessregistrationnumber
type: string
example: 12-3456789
businessRegistrationType:
title: Businessregistrationtype
type: string
example: EIN
businessRegistrationCountry:
title: Businessregistrationcountry
type: string
example: US
doingBusinessAs:
title: Doingbusinessas
type: string
example: Acme Services
entityType:
allOf:
- $ref: '#/components/schemas/messaging_toll_free_verification_EntityType'
example: PRIVATE_PROFIT
optInConfirmationResponse:
title: Optinconfirmationresponse
type: string
example: You have successfully opted in to receive messages from Acme Corp
helpMessageResponse:
title: Helpmessageresponse
type: string
example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com'
privacyPolicyURL:
title: Privacypolicyurl
type: string
example: https://example.com/privacy
termsAndConditionURL:
title: Termsandconditionurl
type: string
example: https://example.com/terms
ageGatedContent:
title: Agegatedcontent
type: boolean
example: false
optInKeywords:
title: Optinkeywords
type: string
example: START, YES, SUBSCRIBE
campaignVerifyAuthorizationToken:
title: Campaignverifyauthorizationtoken
type:
- string
- 'null'
maxLength: 500
description: Campaign Verify Authorization Token required for Political use case submissions starting February 17,
2026
example: cv_token_abc123xyz
id:
title: Id
type: string
format: uuid
verificationRequestId:
title: Verificationrequestid
type: string
verificationStatus:
allOf:
- $ref: '#/components/schemas/TFVerificationStatus'
default: In Progress
description: A verification request as it comes out of the database
messaging_toll_free_verification_VerificationRequestStatus:
title: VerificationRequestStatus
required:
- businessName
- corporateWebsite
- businessAddr1
- businessCity
- businessState
- businessZip
- businessContactFirstName
- businessContactLastName
- businessContactEmail
- businessContactPhone
- messageVolume
- phoneNumbers
- useCase
- useCaseSummary
- productionMessageContent
- optInWorkflow
- optInWorkflowImageURLs
- additionalInformation
- id
- verificationStatus
type: object
properties:
businessName:
title: Businessname
type: string
example: Telnyx LLC
corporateWebsite:
title: Corporatewebsite
type: string
example: http://example.com
businessAddr1:
title: Businessaddr1
type: string
example: 600 Congress Avenue
businessAddr2:
title: Businessaddr2
type: string
example: 14th Floor
businessCity:
title: Businesscity
type: string
example: Austin
businessState:
title: Businessstate
type: string
example: Texas
businessZip:
title: Businesszip
type: string
example: '78701'
businessContactFirstName:
title: Businesscontactfirstname
type: string
example: John
businessContactLastName:
title: Businesscontactlastname
type: string
example: Doe
businessContactEmail:
title: Businesscontactemail
type: string
example: email@example.com
businessContactPhone:
title: Businesscontactphone
type: string
example: '+18889809750'
messageVolume:
allOf:
- $ref: '#/components/schemas/Volume'
description: 'One of the following exact values: 10; 100; 1,000; 10,000; 100,000; 250,000; 500,000; 750,000; 1,000,000;
5,000,000; 10,000,000+'
example: 100,000
phoneNumbers:
title: Phonenumbers
type: array
items:
$ref: '#/components/schemas/TFPhoneNumber'
example:
- phoneNumber: '+18773554398'
- phoneNumber: '+18773554399'
useCase:
allOf:
- $ref: '#/components/schemas/UseCaseCategories'
example: 2FA
useCaseSummary:
title: Usecasesummary
type: string
example: This is a use case where Telnyx sends out 2FA codes to portal users to verify their identity in order to
sign into the portal
productionMessageContent:
title: Productionmessagecontent
type: string
example: Your Telnyx OTP is XXXX
optInWorkflow:
title: Optinworkflow
type: string
example: User signs into the Telnyx portal, enters number and is prompted to select whether they want to use 2FA
verification for security purposes. If they've opted in a confirmation message is sent out to the handset
optInWorkflowImageURLs:
title: Optinworkflowimageurls
type: array
items:
$ref: '#/components/schemas/Url'
example:
- url: https://telnyx.com/sign-up
- url: https://telnyx.com/company/data-privacy
additionalInformation:
title: Additionalinformation
type: string
example: This is for security purposes, blah blah blah
isvReseller:
title: Isvreseller
type: string
example: 'Yes'
webhookUrl:
title: Webhookurl
type: string
example: http://example-webhook.com
businessRegistrationNumber:
title: Businessregistrationnumber
type: string
example: 12-3456789
businessRegistrationType:
title: Businessregistrationtype
type: string
example: EIN
businessRegistrationCountry:
title: Businessregistrationcountry
type: string
example: US
doingBusinessAs:
title: Doingbusinessas
type: string
example: Acme Services
entityType:
allOf:
- $ref: '#/components/schemas/messaging_toll_free_verification_EntityType'
example: PRIVATE_PROFIT
optInConfirmationResponse:
title: Optinconfirmationresponse
type: string
example: You have successfully opted in to receive messages from Acme Corp
helpMessageResponse:
title: Helpmessageresponse
type: string
example: 'Reply HELP for assistance or STOP to unsubscribe. Contact: support@example.com'
privacyPolicyURL:
title: Privacypolicyurl
type: string
example: https://example.com/privacy
termsAndConditionURL:
title: Termsandconditionurl
type: string
example: https://example.com/terms
ageGatedContent:
title: Agegatedcontent
type: boolean
example: false
optInKeywords:
title: Optinkeywords
type: string
example: START, YES, SUBSCRIBE
campaignVerifyAuthorizationToken:
title: Campaignverifyauthorizationtoken
type:
- string
- 'null'
maxLength: 500
description: Campaign Verify Authorization Token required for Political use case submissions starting February 17,
2026
example: cv_token_abc123xyz
id:
title: Id
type: string
format: uuid
example: eaba9f52-164e-58e0-b002-4f668e18b7ed
verificationStatus:
allOf:
- $ref: '#/components/schemas/TFVerificationStatus'
example: Waiting For Customer
reason:
title: Reason
type: string
example: Unfortunately, we have to cancel this request as we do not support non tollfree US numbers.
createdAt:
title: Createdat
type: string
format: date-time
example: '2024-01-23T18:10:02.574Z'
updatedAt:
title: Updatedat
type: string
format: date-time
example: '2024-01-23T18:10:02.574Z'
description: A verification request and its status, suitable for returning to users
mobile_phone_numbers_PaginationMeta:
type: object
properties:
total_pages:
type: integer
total_results:
type: integer
page_number:
type: integer
page_size:
type: integer
mobile_voice_connections_PaginationMeta:
type: object
properties:
total_pages:
type: integer
total_results:
type: integer
page_number:
type: integer
page_size:
type: integer
name:
type: string
description: The name associated with the authentication provider.
example: Okta
neighborhood:
type: string
description: The neighborhood of the address. This field is not used for addresses in the US but is used for some international
addresses.
example: Ciudad de los deportes
netapps_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
netapps_Error_17904fcfbc:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
netapps_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/netapps_Error'
type: object
netapps_Location:
type: object
title: Location
properties:
region:
type: string
description: Identifies the geographical region of location.
example: AMER
site:
type: string
description: Site of location.
example: ORD
pop:
type: string
description: Point of presence of location.
example: CH1
code:
type: string
description: Location code.
example: chicago-il
name:
type: string
description: Human readable name of location.
example: Chicago IL, US
netapps_Location_17904fcfbc:
type: object
title: Location
properties:
region:
type: string
description: Identifies the geographical region of location.
example: AMER
site:
type: string
description: Site of location.
example: ORD
pop:
type: string
description: Point of presence of location.
example: CH1
code:
type: string
description: Location code.
example: chicago-il
name:
type: string
description: Human readable name of location.
example: Chicago IL, US
netapps_Region:
type: object
title: Region
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: region
code:
type: string
description: A code for the region.
example: ashburn-va
name:
type: string
description: A name for the region.
example: Ashburn
supported_interfaces:
type: array
description: List of interface types supported in this region.
items:
type: string
example: wireguard_interface
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
netapps_Region_17904fcfbc:
type: object
title: Region
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: region
code:
type: string
description: A code for the region.
example: ashburn-va
name:
type: string
description: A name for the region.
example: Ashburn
supported_interfaces:
type: array
description: List of interface types supported in this region.
items:
type: string
example: wireguard_interface
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
netapps_VirtualCrossConnectCoverage:
allOf:
- type: object
title: VirtualCrossConnectCoverage
properties:
record_type:
type: string
description: Identifies the type of the resource.
readOnly: true
example: virtual_cross_connects_coverage
location:
$ref: '#/components/schemas/netapps_Location_17904fcfbc'
cloud_provider:
type: string
enum:
- aws
- azure
- gce
description: The Virtual Private Cloud with which you would like to establish a cross connect.
example: aws
cloud_provider_region:
type: string
description: The region where your Virtual Private Cloud hosts are located. Should be identical to how the cloud
provider names region, i.e. us-east-1 for AWS but Frankfurt for Azure
example: us-east-1
available_bandwidth:
type: array
description: The available throughput in Megabits per Second (Mbps) for your Virtual Cross Connect.
items:
type: number
example:
- 50
- 100
- 200
- 500
noise-suppression-engines_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
source:
type: object
properties:
pointer:
type: string
required:
- errors
noise-suppression-engines_NoiseSuppressionEngine:
type: object
description: A noise suppression engine available to the authenticated user.
properties:
value:
type: string
description: Machine-readable identifier of the engine, used when configuring noise suppression.
example: denoiser
label:
type: string
description: Human-readable name of the engine.
example: Denoiser
default_attenuation_level:
type: integer
description: Default attenuation level of the engine (0-100, in multiples of ten).
minimum: 0
maximum: 100
multipleOf: 10
example: 0
required:
- value
- label
- default_attenuation_level
notifications_Error:
required:
- code
- title
properties:
code:
type: string
x-format: int64
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
number-lookup_Address:
type: object
description: Postal address associated with the phone number's owner.
properties:
street_line_1:
type:
- string
- 'null'
description: First line of the street address.
example: 123 Main St
street_line_2:
type:
- string
- 'null'
description: Second line of the street address, if any.
example: null
city:
type:
- string
- 'null'
description: City.
example: Anytown
state_code:
type:
- string
- 'null'
description: Two-letter state or province code.
example: CA
postal_code:
type:
- string
- 'null'
description: Postal or ZIP code.
example: '90210'
zip4:
type:
- string
- 'null'
description: ZIP+4 extension, if available.
example: '1234'
country_code:
type:
- string
- 'null'
description: Two-letter ISO 3166-1 country code.
example: US
number-lookup_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
number-reputation_AgentInput:
type: object
description: Third-party reseller / partner managing the enterprise's phone numbers. Omit when the enterprise works
directly with Telnyx.
required:
- legal_name
- street_address
- city
- administrative_area
- postal_code
- country
- contact_name
- contact_title
- contact_email
- contact_phone
properties:
legal_name:
type: string
maxLength: 200
dba:
type:
- string
- 'null'
maxLength: 200
street_address:
type: string
maxLength: 255
extended_address:
type:
- string
- 'null'
maxLength: 255
city:
type: string
maxLength: 120
administrative_area:
type: string
maxLength: 120
postal_code:
type: string
maxLength: 30
country:
type: string
minLength: 2
maxLength: 2
example: US
contact_name:
type: string
maxLength: 200
contact_title:
type: string
maxLength: 200
contact_email:
type: string
format: email
contact_phone:
type: string
maxLength: 30
example: '+13125550000'
number-reputation_Error:
type: object
required:
- code
- title
- detail
- meta
properties:
code:
type: string
example: '10005'
description: Stable numeric Telnyx error catalog id. See `meta.url` for the full catalog entry.
title:
type: string
example: Invalid parameters
description: Short human-readable category, e.g. `Bad Request`, `Duplicate resource`, `Not Found`, `Forbidden`.
Treat as advisory only - the stable identifier is `code`.
detail:
type: string
example: field required
description: Context-specific message describing what went wrong on this particular request. May embed offending
values; do not rely on it for programmatic matching - branch on `code`.
meta:
type: object
required:
- url
properties:
url:
type: string
format: uri
example: https://developers.telnyx.com/docs/overview/errors/10005
pending_check_ids:
type: array
items:
type: string
format: uuid
description: Set on `422 vetting_checks_incomplete` responses from `/admin/dir/{id}/approve` and `/admin/phone-number-batches/approve`.
Lists the still-pending vetting check ids.
pending_check_codes:
type: array
items:
type: string
description: Codes of the pending vetting checks (e.g. `loa_signature_valid`).
pending_check_labels:
type: array
items:
type: string
description: Human-readable labels of the pending vetting checks.
description: Carries `url` linking to the Telnyx error catalog entry for this `code`. Useful for forwarding the
user to documentation.
source:
type: object
description: Optional pointer at the offending field of the request.
properties:
pointer:
type: string
example: /body/legal_name
parameter:
type: string
example: page[size]
description: A single entry in the canonical Telnyx error envelope. `code` is the stable Telnyx error catalog id; the
human-readable explanation lives at `meta.url`. `detail` is a context-specific message; `source.pointer` (when present)
names the offending field of the request.
number-reputation_Errors:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/number-reputation_Error'
description: List of one or more error entries. Order is not significant.
description: Canonical Telnyx error envelope. Returned on every 4xx and 5xx response from this service. `errors` is
non-empty; multiple entries indicate multiple distinct problems with the same request (e.g. one entry per invalid
phone number on a bulk operation).
number-reputation_PaginationMeta:
type: object
required:
- total_pages
- total_results
- page_number
- page_size
properties:
total_pages:
type: integer
example: 3
description: Total number of pages available given the current `page_size`.
total_results:
type: integer
example: 42
description: Total number of items across all pages (excludes soft-deleted rows).
page_number:
type: integer
example: 1
description: 1-based index of this page. Echoes the `page[number]` query parameter (default `1`).
page_size:
type: integer
example: 20
description: Number of items returned in this page's `data` array. Capped at 250.
description: JSON:API pagination metadata returned with every paginated list response. Page numbering is 1-based. `page_size`
reports the number of items actually returned in `data` for this page; the requested size is taken from the `page[size]`
query parameter.
number-reputation_TosAgreement:
type: object
description: A recorded user agreement to a product's Terms of Service. The `user_id` is intentionally NOT echoed back
on this public surface - the caller already knows their own identity.
properties:
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
readOnly: true
terms_version:
type: string
example: v1.0.0
version:
type: string
description: Convenience alias of `terms_version`. Both keys are present on every response.
example: v1.0.0
readOnly: true
product_type:
$ref: '#/components/schemas/TosProductType'
agreed_at:
type: string
format: date-time
example: '2025-07-10T10:30:00Z'
readOnly: true
created_at:
type: string
format: date-time
example: '2025-07-10T10:30:00Z'
readOnly: true
numbers_Error:
properties:
code:
type: string
example: '10007'
title:
type: string
example: Unexpected error
detail:
type: string
example: An unexpected error occured.
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
example: /base
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
properties:
url:
type: string
description: URL with additional information on the error.
example: https://developers.telnyx.com/docs/overview/errors/10015
type: object
numbers_Error_73c9788e53:
properties:
code:
type: string
example: '10007'
title:
type: string
example: Unexpected error
detail:
type: string
example: An unexpected error occured.
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
example: /base
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
properties:
url:
type: string
description: URL with additional information on the error.
example: https://developers.telnyx.com/docs/overview/errors/10015
type: object
numbers_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/numbers_Error'
type: object
numbers_IntId:
type: string
description: Identifies the resource.
example: '1293384261075731499'
readOnly: true
numbers_IntId_73c9788e53:
type: string
description: Identifies the resource.
example: '1293384261075731499'
readOnly: true
numbers_NumberOrderWebhookEvent:
type: object
title: Number Order Event
properties:
data:
type: object
properties:
event_type:
type: string
enum:
- number_order.complete
example: number_order.complete
description: The type of event being sent
id:
type: string
format: uuid
example: d578b093-a0e7-4b64-b0d3-6b689a6ff170
description: Unique identifier for the event
occurred_at:
type: string
format: date-time
example: '2025-08-22T16:23:54.496464Z'
description: ISO 8601 timestamp of when the event occurred
payload:
$ref: '#/components/schemas/NumberOrderWebhookPayload'
record_type:
type: string
example: event
description: Type of record
required:
- event_type
- id
- occurred_at
- payload
- record_type
meta:
type: object
properties:
attempt:
type: integer
example: 1
description: Webhook delivery attempt number
delivered_to:
type: string
format: uri
example: https://sample-api.com/webhook
description: URL where the webhook was delivered
required:
- attempt
- delivered_to
required:
- data
- meta
numbers_PhoneNumberBlocksJobFailedOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
errors:
type: array
items:
$ref: '#/components/schemas/numbers_Error_73c9788e53'
type: object
numbers_PhoneNumberDeletedDetailed:
type: object
example:
id: '1293384261075731499'
record_type: phone_number
phone_number: '+19705555098'
status: deleted
tags:
- tag_1
- tag_2
external_pin: '1234'
connection_id: '1293384261075731499'
connection_name: connection-name
customer_reference: customer-reference
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
messaging_profile_name: regional-customers
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
emergency_enabled: true
emergency_address_id: '1315261609962112019'
call_forwarding_enabled: true
cnam_listing_enabled: true
caller_id_name_enabled: true
call_recording_enabled: true
t38_fax_gateway_enabled: true
phone_number_type: local
purchased_at: '2019-10-23T18:10:00.000Z'
created_at: '2019-10-23T18:10:00.000Z'
updated_at: '2019-10-24T18:10:00.000Z'
hd_voice_enabled: true
deletion_lock_enabled: false
activated_at: '2019-10-23T18:10:00.000Z'
properties:
id:
$ref: '#/components/schemas/numbers_IntId_73c9788e53'
record_type:
type: string
example: phone_number
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number associated with this record.
readOnly: true
status:
type: string
description: The phone number's current status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- port-failed
- active
- deleted
- emergency-only
- ported-out
- port-out-pending
readOnly: true
tags:
type: array
description: A list of user-assigned tags to help manage the phone number.
items:
type: string
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note
that not all carriers cooperate with this security mechanism.
connection_name:
type: string
description: The user-assigned name of the connection to be associated with this phone number.
readOnly: true
connection_id:
type: string
description: Identifies the connection associated with the phone number.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
messaging_profile_id:
type: string
description: Identifies the messaging profile associated with the phone number.
messaging_profile_name:
type: string
description: The name of the messaging profile associated with the phone number.
example: regional-customers
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
emergency_enabled:
type: boolean
description: Indicates whether emergency services are enabled for this number.
readOnly: true
emergency_address_id:
type: string
description: Identifies the emergency address associated with the phone number.
readOnly: true
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
cnam_listing_enabled:
type: boolean
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
caller_id_name_enabled:
type: boolean
description: Indicates whether caller ID is enabled for this number.
readOnly: true
call_recording_enabled:
type: boolean
description: Indicates whether call recording is enabled for this number.
readOnly: true
t38_fax_gateway_enabled:
type: boolean
description: Indicates whether T38 Fax Gateway for inbound calls to this number.
readOnly: true
purchased_at:
type: string
description: ISO 8601 formatted date indicating the time the request was made to purchase the number.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the time it took to activate after the purchase.
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
readOnly: true
phone_number_type:
type: string
description: The phone number's type.
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
readOnly: true
deletion_lock_enabled:
type: boolean
description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number
from being deleted via the API or Telnyx portal.
readOnly: true
activated_at:
description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending
or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated
before this field was tracked.
anyOf:
- type: string
format: date-time
- type: 'null'
readOnly: true
numbers_PhoneNumberDetailed:
type: object
example:
id: '1293384261075731499'
record_type: phone_number
phone_number: '+19705555098'
country_iso_alpha2: US
status: active
tags:
- tag_1
- tag_2
external_pin: '1234'
connection_id: '1293384261075731499'
connection_name: connection-name
customer_reference: customer-reference
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600000000
messaging_profile_name: regional-customers
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
emergency_enabled: true
emergency_address_id: '1315261609962112019'
emergency_status: active
call_forwarding_enabled: true
cnam_listing_enabled: true
caller_id_name_enabled: true
call_recording_enabled: true
t38_fax_gateway_enabled: true
phone_number_type: local
inbound_call_screening: disabled
purchased_at: '2019-10-23T18:10:00.000Z'
created_at: '2019-10-23T18:10:00.000Z'
updated_at: '2019-10-24T18:10:00.000Z'
hd_voice_enabled: true
source_type: number_order
deletion_lock_enabled: false
activated_at: '2019-10-23T18:10:00.000Z'
properties:
id:
$ref: '#/components/schemas/numbers_IntId_73c9788e53'
record_type:
type: string
example: phone_number
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number associated with this record.
readOnly: true
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the phone number.
example: US
readOnly: true
status:
type: string
description: The phone number's current status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- port-failed
- active
- deleted
- emergency-only
- ported-out
- port-out-pending
- requirement-info-pending
- requirement-info-under-review
- requirement-info-exception
- provision-pending
readOnly: true
tags:
type: array
description: A list of user-assigned tags to help manage the phone number.
items:
type: string
external_pin:
type:
- string
- 'null'
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note
that not all carriers cooperate with this security mechanism.
connection_name:
type:
- string
- 'null'
description: The user-assigned name of the connection to be associated with this phone number.
readOnly: true
connection_id:
type:
- string
- 'null'
description: Identifies the connection associated with the phone number.
customer_reference:
type:
- string
- 'null'
description: A customer reference string for customer look ups.
example: MY REF 001
messaging_profile_id:
type:
- string
- 'null'
description: Identifies the messaging profile associated with the phone number. If the messaging profile details
could not be retrieved, this value is the string `UNAVAILABLE`.
messaging_profile_name:
type:
- string
- 'null'
description: The name of the messaging profile associated with the phone number. If the messaging profile details
could not be retrieved, this value is the string `UNAVAILABLE`.
example: regional-customers
messaging_campaign_id:
type:
- string
- 'null'
description: Identifies the messaging campaign associated with the phone number's messaging profile. If the messaging
profile details could not be retrieved, this value is the string `UNAVAILABLE`.
billing_group_id:
type:
- string
- 'null'
description: Identifies the billing group associated with the phone number.
emergency_enabled:
type: boolean
description: Indicates whether emergency services are enabled for this number.
readOnly: true
emergency_address_id:
type:
- string
- 'null'
description: Identifies the emergency address associated with the phone number.
readOnly: true
emergency_status:
type: string
description: Indicates the status of the provisioning of emergency services for the phone number. This field contains
information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned
but is not yet enabled/disabled.
enum:
- active
- deprovisioning
- disabled
- provisioning
- provisioning-failed
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
cnam_listing_enabled:
type: boolean
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
caller_id_name_enabled:
type: boolean
description: Indicates whether caller ID is enabled for this number.
readOnly: true
call_recording_enabled:
type: boolean
description: Indicates whether call recording is enabled for this number.
readOnly: true
t38_fax_gateway_enabled:
type: boolean
description: Indicates whether T38 Fax Gateway for inbound calls to this number.
readOnly: true
purchased_at:
type: string
description: ISO 8601 formatted date indicating when the resource was purchased.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
format: date-time
phone_number_type:
type: string
description: 'The phone number''s type.
Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase
completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.'
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
- tollfree
- shortcode
- longcode
readOnly: true
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users
to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls.
This feature has an additional per-number monthly cost associated with it.
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
readOnly: true
source_type:
description: Indicates if the phone number was purchased or ported in. For some numbers this information may not
be available.
anyOf:
- type: string
enum:
- number_order
- port_request
- type: 'null'
readOnly: true
deletion_lock_enabled:
type: boolean
description: Indicates whether deletion lock is enabled for this number. When enabled, this prevents the phone number
from being deleted via the API or Telnyx portal.
activated_at:
description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending
or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated
before this field was tracked.
anyOf:
- type: string
format: date-time
- type: 'null'
readOnly: true
required:
- id
- record_type
- phone_number
- country_iso_alpha2
- status
- tags
- external_pin
- created_at
- phone_number_type
- purchased_at
- deletion_lock_enabled
numbers_PhoneNumberVerifyOwnershipResponse:
type: object
properties:
found:
type: array
description: The list of phone numbers which you own and are in an editable state
items:
type: object
properties:
number_val_e164:
type: string
description: The phone number in E.164 format
example: '+15551234567'
id:
$ref: '#/components/schemas/numbers_IntId_73c9788e53'
not_found:
type: array
description: Phone numbers that are not found in the account
items:
type: string
description: Phone number in E.164 format
example: '+15551234568'
record_type:
type: string
example: number_ownership_verification
description: Identifies the type of the resource.
readOnly: true
numbers_PhoneNumbersJob:
type: object
properties:
parameters:
type: object
properties:
phone_numbers:
type: array
description: Saved target phone numbers in E.164 format and/or identifiers. Jobs created using filters contain
the resolved identifiers, not the original filter expression. Stored identifier types are preserved.
items:
type:
- string
- integer
external_pin:
type:
- string
- 'null'
description: Saved external_pin supplied for an update_phone_numbers job.
connection_id:
type:
- string
- 'null'
description: Saved connection_id supplied for an update_phone_numbers job.
customer_reference:
type:
- string
- 'null'
description: Saved customer_reference supplied for an update_phone_numbers job.
billing_group_id:
type:
- string
- 'null'
description: Saved billing_group_id supplied for an update_phone_numbers job.
hd_voice_enabled:
type:
- boolean
- 'null'
description: Saved hd_voice_enabled supplied for an update_phone_numbers job.
deletion_lock_enabled:
type:
- boolean
- 'null'
description: Saved deletion_lock_enabled supplied for an update_phone_numbers job.
tags:
type:
- array
- 'null'
description: Saved tags for an update_phone_numbers job. Values reflect creation-time normalization.
items:
type: string
add_tags:
type:
- array
- 'null'
description: Saved add_tags for an update_phone_numbers job. Values reflect creation-time normalization.
items:
type: string
remove_tags:
type:
- array
- 'null'
description: Saved remove_tags for an update_phone_numbers job. Values reflect creation-time normalization.
items:
type: string
voice:
type: object
properties:
tech_prefix_enabled:
type:
- boolean
- 'null'
description: Saved tech_prefix_enabled setting.
caller_id_name_enabled:
type:
- boolean
- 'null'
description: Saved caller_id_name_enabled setting.
usage_payment_method:
type:
- string
- 'null'
description: Saved usage_payment_method setting.
inbound_call_screening:
type:
- string
- 'null'
description: Saved inbound_call_screening setting.
call_forwarding:
type: object
properties:
forwards_to:
type:
- string
- 'null'
description: Saved forwards_to setting.
forwarding_type:
type:
- string
- 'null'
description: Saved forwarding_type setting.
call_forwarding_enabled:
type:
- boolean
- 'null'
description: Saved call_forwarding_enabled setting.
call_recording:
type: object
properties:
inbound_call_recording_enabled:
type:
- boolean
- 'null'
description: Saved inbound_call_recording_enabled setting.
inbound_call_recording_channels:
type:
- string
- 'null'
description: Saved inbound_call_recording_channels setting.
inbound_call_recording_format:
type:
- string
- 'null'
description: Saved inbound_call_recording_format setting.
record_continue_on_hold:
type:
- boolean
- 'null'
description: Saved record_continue_on_hold setting.
media_features:
type: object
properties:
rtp_auto_adjust_enabled:
type:
- boolean
- 'null'
description: Saved rtp_auto_adjust_enabled setting.
accept_any_rtp_packets_enabled:
type:
- boolean
- 'null'
description: Saved accept_any_rtp_packets_enabled setting.
t38_fax_gateway_enabled:
type:
- boolean
- 'null'
description: Saved t38_fax_gateway_enabled setting.
cnam_listing:
type: object
properties:
cnam_listing_enabled:
type:
- boolean
- 'null'
description: Saved cnam_listing_enabled setting.
cnam_listing_details:
type:
- string
- 'null'
description: Saved cnam_listing_details setting.
description: Saved voice settings for an update_phone_numbers job, using the public field names and nesting.
Only settings present at creation are returned.
emergency_enabled:
type:
- boolean
- 'null'
description: Saved emergency-services setting for an update_emergency_settings job.
emergency_address_id:
type:
- string
- 'null'
description: Saved emergency address identifier for an update_emergency_settings job. An explicitly supplied
null is preserved.
readOnly: true
description: Effective parameters saved when the job was created, not a snapshot of the original HTTP request or
current phone-number settings. Update jobs include the saved update fields; emergency-settings jobs include the
saved emergency fields; delete jobs include only targets. Absent fields are omitted, and saved false, null and
empty values are preserved. Tags may be normalized to arrays; filter-created jobs contain resolved target identifiers
rather than the original filters. Historical jobs with no saved arguments return an empty object.
examples:
- phone_numbers:
- '1583466971586889004'
- '+13127367254'
customer_reference: customer-reference
tags:
- tag
voice:
tech_prefix_enabled: false
- phone_numbers:
- '+19705555098'
emergency_enabled: false
emergency_address_id: null
- phone_numbers:
- '+19705555098'
id:
type: string
format: uuid
example: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
description: Identifies the resource.
readOnly: true
record_type:
type: string
example: phone_numbers_job
description: Identifies the type of the resource.
readOnly: true
status:
type: string
enum:
- pending
- in_progress
- completed
- failed
- expired
default: pending
example: pending
description: Indicates the completion status of the background update.
readOnly: true
type:
type: string
enum:
- update_emergency_settings
- delete_phone_numbers
- update_phone_numbers
example: update_emergency_settings
description: Identifies the type of the background job.
readOnly: true
etc:
type: string
format: date-time
description: ISO 8601 formatted date indicating when the estimated time of completion of the background job.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
phone_numbers:
type: array
items:
description: The unique phone numbers given as arguments in the job creation.
$ref: '#/components/schemas/PhoneNumbersJobPhoneNumber'
successful_operations:
type: array
items:
description: The phone numbers successfully updated.
$ref: '#/components/schemas/PhoneNumbersJobSuccessfulOperation'
readOnly: true
pending_operations:
type: array
items:
description: The phone numbers pending confirmation on update results. Entries in this list are transient, and
will be moved to either successful_operations or failed_operations once the processing is done.
$ref: '#/components/schemas/PhoneNumbersJobPendingOperation'
readOnly: true
failed_operations:
type: array
items:
$ref: '#/components/schemas/numbers_PhoneNumbersJobFailedOperation'
readOnly: true
example:
id: 42587e44-3a3e-46de-9255-0c9a7a1d1ec7
record_type: phone_numbers_job
status: pending
type: update_emergency_settings
etc: '2020-10-30T18:10:00.000Z'
created_at: '2020-10-23T18:10:00.000Z'
updated_at: '2020-10-23T18:10:01.000Z'
phone_numbers:
- id: '2637816387126861836'
- phone_number: '+19715555098'
- phone_number: '+19705555099'
- id: '3388768018273'
successful_operations:
- id: '2637816387126861836'
phone_number: '+19705555098'
- id: '33081887126861836'
phone_number: '+19715555098'
pending_operations:
- id: '2637816387126861837'
phone_number: '+19705555099'
failed_operations:
- id: '3388768018273'
phone_number: '+19705551234'
errors:
- code: '10015'
title: Bad Request
detail: The field is invalid.
source:
pointer: /emergency_address_id
numbers_PhoneNumbersJobFailedOperation:
properties:
phone_number:
type: string
description: The phone number in e164 format.
id:
type: string
description: The phone number's ID
errors:
type: array
items:
$ref: '#/components/schemas/numbers_Error_73c9788e53'
type: object
numbers_PhoneNumbersJobUpdatePhoneNumbersRequest:
type: object
required:
- phone_numbers
properties:
phone_numbers:
type: array
description: Array of phone number ids and/or phone numbers in E164 format to update. This parameter is required
if no filter parameters are provided. If you want to update specific numbers rather than all numbers matching
a filter, you must use this parameter. Each item must be either a valid phone number ID or a phone number in E164
format (e.g., '+13127367254').
items:
type: string
tags:
type: array
description: A list of user-assigned tags to help organize phone numbers.
items:
type: string
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, we will attempt to verify that you provided the correct external PIN to the winning carrier. Note that
not all carriers cooperate with this security mechanism.
customer_reference:
type: string
description: Sets the customer reference on the selected phone numbers and retains the supplied value on the job.
Recover the job without its ID using GET /phone_numbers/jobs with filter[customer_reference] within 90 days of
job creation. This body field updates the numbers; the separate filter[customer_reference] query parameter selects
numbers by their current reference.
example: MY REF 001
connection_id:
type: string
description: Identifies the connection associated with the phone number.
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
hd_voice_enabled:
type: boolean
description: Indicates whether to enable or disable HD Voice on each phone number. HD Voice is a paid feature and
may not be available for all phone numbers, more details about it can be found in the Telnyx support documentation.
deletion_lock_enabled:
type: boolean
description: Indicates whether to enable or disable the deletion lock on each phone number. When enabled, this prevents
the phone number from being deleted via the API or Telnyx portal.
voice:
$ref: '#/components/schemas/UpdatePhoneNumberVoiceSettingsRequest'
example:
phone_numbers:
- '1583466971586889004'
- '+13127367254'
tags:
- tag
external_pin: '123456'
customer_reference: customer-reference
connection_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
billing_group_id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
deletion_lock_enabled: true
voice:
call_forwarding:
call_forwarding_enabled: true
forwards_to: '+13035559123'
forwarding_type: always
numbers_SlimPhoneNumberDetailed:
type: object
example:
id: '1293384261075731499'
record_type: phone_number
phone_number: '+19705555098'
country_iso_alpha2: US
status: active
external_pin: '1234'
connection_id: '1293384261075731499'
customer_reference: customer-reference
billing_group_id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
emergency_enabled: true
emergency_address_id: '1315261609962112019'
emergency_status: active
call_forwarding_enabled: true
cnam_listing_enabled: true
caller_id_name_enabled: true
call_recording_enabled: true
t38_fax_gateway_enabled: true
phone_number_type: local
inbound_call_screening: disabled
purchased_at: '2019-10-23T18:10:00.000Z'
created_at: '2019-10-23T18:10:00.000Z'
updated_at: '2019-10-24T18:10:00.000Z'
hd_voice_enabled: true
activated_at: '2019-10-23T18:10:00.000Z'
properties:
id:
$ref: '#/components/schemas/numbers_IntId_73c9788e53'
record_type:
type: string
example: phone_number_slim
description: Identifies the type of the resource.
readOnly: true
phone_number:
type: string
description: The +E.164-formatted phone number associated with this record.
readOnly: true
country_iso_alpha2:
type: string
description: The ISO 3166-1 alpha-2 country code of the phone number.
example: US
readOnly: true
status:
type: string
description: The phone number's current status.
enum:
- purchase-pending
- purchase-failed
- port-pending
- port-failed
- active
- deleted
- emergency-only
- ported-out
- port-out-pending
- requirement-info-pending
- requirement-info-under-review
- requirement-info-exception
- provision-pending
readOnly: true
external_pin:
type: string
description: If someone attempts to port your phone number away from Telnyx and your phone number has an external
PIN set, Telnyx will attempt to verify that you provided the correct external PIN to the winning carrier. Note
that not all carriers cooperate with this security mechanism.
connection_id:
type: string
description: Identifies the connection associated with the phone number.
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
billing_group_id:
type: string
description: Identifies the billing group associated with the phone number.
emergency_enabled:
type: boolean
description: Indicates whether emergency services are enabled for this number.
readOnly: true
emergency_address_id:
type: string
description: Identifies the emergency address associated with the phone number.
readOnly: true
emergency_status:
type: string
description: Indicates the status of the provisioning of emergency services for the phone number. This field contains
information about activity that may be ongoing for a number where it either is being provisioned or deprovisioned
but is not yet enabled/disabled.
enum:
- active
- deprovisioning
- disabled
- provisioning
- provisioning-failed
call_forwarding_enabled:
type: boolean
default: true
description: Indicates if call forwarding will be enabled for this number if forwards_to and forwarding_type are
filled in. Defaults to true for backwards compatibility with APIV1 use of numbers endpoints.
readOnly: true
cnam_listing_enabled:
type: boolean
description: Indicates whether a CNAM listing is enabled for this number.
readOnly: true
caller_id_name_enabled:
type: boolean
description: Indicates whether caller ID is enabled for this number.
readOnly: true
call_recording_enabled:
type: boolean
description: Indicates whether call recording is enabled for this number.
readOnly: true
t38_fax_gateway_enabled:
type: boolean
description: Indicates whether T38 Fax Gateway for inbound calls to this number.
readOnly: true
purchased_at:
type: string
description: ISO 8601 formatted date indicating when the resource was purchased.
readOnly: true
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
readOnly: true
phone_number_type:
type: string
description: 'The phone number''s type.
Note: For numbers purchased prior to July 2023 or when fetching a number''s details immediately after a purchase
completes, the legacy values `tollfree`, `shortcode` or `longcode` may be returned instead.'
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
- tollfree
- shortcode
- longcode
readOnly: true
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
readOnly: true
hd_voice_enabled:
type: boolean
description: Indicates whether HD voice is enabled for this number.
readOnly: true
inbound_call_screening:
type: string
enum:
- disabled
- reject_calls
- flag_calls
default: disabled
description: The inbound_call_screening setting is a phone number configuration option variable that allows users
to configure their settings to block or flag fraudulent calls. It can be set to disabled, reject_calls, or flag_calls.
This feature has an additional per-number monthly cost associated with it.
activated_at:
description: ISO 8601 formatted date indicating when the phone number was first activated (transitioned from purchase-pending
or port-pending to active). Will be null for numbers that have not yet been activated, or for legacy numbers activated
before this field was tracked.
anyOf:
- type: string
format: date-time
- type: 'null'
readOnly: true
numbers_SubNumberOrder:
properties:
id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c292
readOnly: true
order_request_id:
type: string
format: uuid
example: 12ade33a-21c0-473b-b055-b3c836e1c293
readOnly: true
country_code:
type: string
example: US
readOnly: true
phone_number_type:
type: string
example: local
enum:
- local
- toll_free
- mobile
- national
- shared_cost
- landline
user_id:
type: string
format: uuid
example: d70873cd-7c98-401a-81b6-b1ae08246995
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/SubNumberOrderRegulatoryRequirement'
record_type:
type: string
example: sub_number_order
readOnly: true
phone_numbers_count:
type: integer
description: The count of phone numbers in the number order.
example: 1
readOnly: true
created_at:
type: string
format: date-time
description: An ISO 8901 datetime string denoting when the number order was created.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
updated_at:
type: string
format: date-time
description: An ISO 8901 datetime string for when the number order was updated.
example: '2018-01-01T00:00:00.000000Z'
readOnly: true
requirements_met:
type: boolean
description: True if all requirements are met for every phone number, false otherwise.
example: true
readOnly: true
status:
type: string
enum:
- pending
- success
- failure
description: The status of the order.
readOnly: true
customer_reference:
type: string
description: A customer reference string for customer look ups.
example: MY REF 001
is_block_sub_number_order:
type: boolean
description: True if the sub number order is a block sub number order
example: false
readOnly: true
phone_numbers:
type: array
description: The first 50 phone numbers in the sub number order, including their per-number regulatory requirement
statuses. Only present when filter[include_phone_numbers]=true is used.
readOnly: true
items:
$ref: '#/components/schemas/numbers_SubNumberOrderPhoneNumber'
type: object
numbers_SubNumberOrderPhoneNumber:
type: object
properties:
id:
type: string
format: uuid
phone_number:
type: string
country_code:
type: string
phone_number_type:
type: string
requirements_met:
type: boolean
requirements_status:
type: string
status:
type: string
record_type:
type: string
bundle_id:
type:
- string
- 'null'
format: uuid
regulatory_requirements:
type: array
items:
$ref: '#/components/schemas/numbers_SubNumberOrderRegulatoryRequirementWithValue'
numbers_SubNumberOrderRegulatoryRequirementWithValue:
properties:
record_type:
type: string
example: phone_number_regulatory_requirement
readOnly: true
requirement_id:
type: string
format: uuid
description: Unique id for a requirement.
example: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_type:
type: string
enum:
- textual
- datetime
- address
- document
example: address
readOnly: true
field_value:
type: string
description: The value of the requirement, this could be an id to a resource or a string value.
example: 45f45a04-b4be-4592-95b1-9306b9db2b21
status:
type: string
description: The status of the regulatory requirement for this phone number.
enum:
- approved
- declined
- awaiting-value
- pending-approval
example: approved
readOnly: true
type: object
oauth_Error:
type: object
properties:
error:
type: string
description: Error code
error_description:
type: string
description: Human-readable error description
required:
- error
oauth_PaginationMeta:
type: object
properties:
page_number:
type: integer
description: Current page number
page_size:
type: integer
description: Number of items per page
total_results:
type: integer
description: Total number of results
total_pages:
type: integer
description: Total number of pages
oauth_oauth_Error:
type: object
properties:
error:
type: string
description: Error code
error_description:
type: string
description: Human-readable error description
required:
- error
oauth_oauth_PaginationMeta:
type: object
properties:
page_number:
type: integer
description: Current page number
page_size:
type: integer
description: Number of items per page
total_results:
type: integer
description: Total number of results
total_pages:
type: integer
description: Total number of pages
organization_id:
type: string
format: uuid
description: The id from the Organization the authentication provider belongs to.
example: 24b4a4bb-c4df-46ad-bbcb-23fc741c5ad7
outbound-voice-profiles_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
parakeet_models:
type: string
enum:
- nvidia/parakeet-v3
- omi-health/omi-med-stt-v1
phone_number:
type: string
description: The phone number associated with the address.
example: '+12125559000'
postal_code:
type: string
description: The postal code of the address.
example: '78701'
pricing_PaginationMeta:
type: object
properties:
page_number:
type: integer
page_size:
type: integer
total_pages:
type: integer
total_results:
type: integer
required:
- page_number
- page_size
- total_pages
- total_results
programmable-fax_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
programmable-fax_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
programmable-fax_RecordType:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
pronunciation-dicts_ErrorObject:
type: object
properties:
code:
type: string
description: Machine-readable error code.
example: '90202'
title:
type: string
description: Short human-readable error title.
example: Validation failed
detail:
type: string
description: Detailed error description.
example: items must have at least one item
source:
type: object
description: Source of the error.
properties:
pointer:
type: string
description: JSON pointer to the field that caused the error.
example: /items
pronunciation-dicts_ErrorResponse:
type: object
description: Standard Telnyx error response.
properties:
errors:
type: array
items:
$ref: '#/components/schemas/pronunciation-dicts_ErrorObject'
pronunciation-dicts_PaginationMeta:
type: object
description: Pagination metadata returned with list responses.
properties:
page_number:
type: integer
description: Current page number (1-based).
example: 1
page_size:
type: integer
description: Number of results per page.
example: 20
total_results:
type: integer
description: Total number of results across all pages.
example: 3
total_pages:
type: integer
description: Total number of pages.
example: 1
push-notifications_Error:
required:
- code
- title
properties:
code:
type: string
example: '10015'
title:
type: string
example: Bad Request
detail:
type: string
example: has already been taken
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
example: /mobile_push_credentials
parameter:
description: Indicates which query parameter caused the error.
type: string
example: application_name
meta:
type: object
example:
url: https://developers.telnyx.com/docs/overview/errors/10015
additionalProperties: true
type: object
queues_QueueResource:
type: object
title: Queue resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
average_wait_time: '30'
current_size: '3'
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
max_size: '10'
sid: my-queue
uri: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json
subresource_uris:
members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 4e71926f-8f13-450e-b91c-23c2ef786aa6
average_wait_time:
type: integer
description: The average wait time in seconds for members in the queue.
example: '30'
current_size:
type: integer
description: The current number of members in the queue.
example: '3'
date_created:
type: string
description: The timestamp of when the resource was created.
example: Fri, 27 Oct 2023 07:41:58 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Fri, 27 Oct 2023 07:41:58 +0000
max_size:
type: integer
description: The maximum size of the queue.
example: '10'
sid:
type: string
description: The unique identifier of the queue.
example: my-queue
uri:
type: string
description: The relative URI for this queue.
example: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue.json
subresource_uris:
type: object
description: A list of related resources identified by their relative URIs.
example:
members: /Accounts/4e71926f-8f13-450e-b91c-23c2ef786aa6/Queues/my-queue/Members.json
additionalProperties: 'true'
queues_QueueResourceIndex:
type: object
title: Multiple queue resources
example:
queues: []
end: '0'
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
next_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
page: '0'
page_size: '1'
start: '0'
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
properties:
queues:
type: array
items:
$ref: '#/components/schemas/queues_QueueResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: '19'
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: '0'
page_size:
type: integer
description: The number of items on the page
example: '20'
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: '0'
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Queues.json?Page=0&PageSize=1
rcs-registration_ErrorResponse:
type: object
properties:
detail:
type: string
errors:
type: array
items:
type: object
additionalProperties: true
additionalProperties: true
example:
detail: The requested RCS resource was not found.
recordings_ConferenceRecordingResource:
type: object
title: Conference recording resource
example:
account_sid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
call_sid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
channels: '1'
conference_sid: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f
date_created: Fri, 27 Oct 2023 07:41:58 +0000
date_updated: Fri, 27 Oct 2023 07:41:58 +0000
duration: '5'
media_url: https://www.example.com/download.mp3
sid: 136285da-4b74-46f1-a016-fe2982fa77c3
source: StartConferenceRecordingAPI
start_time: Fri, 27 Oct 2023 07:41:58 +0000
status: completed
subresource_uris:
transcriptions: null
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json
properties:
account_sid:
type: string
description: The id of the account the resource belongs to.
example: 61bf923e-5e4d-4595-a110-56190ea18a1b
call_sid:
type: string
description: The identifier of the related participant's call.
example: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
channels:
type: integer
description: The number of channels in the recording.
example: '1'
conference_sid:
type: string
description: The identifier of the related conference.
example: 6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f
date_created:
type: string
description: The timestamp of when the resource was created.
example: Thu, 15 Jun 2023 09:56:45 +0000
date_updated:
type: string
description: The timestamp of when the resource was last updated.
example: Thu, 15 Jun 2023 09:56:45 +0000
duration:
type: integer
description: Duratin of the recording in seconds.
example: '10'
error_code:
type: string
description: The recording error, if any.
media_url:
type: string
description: The URL to use to download the recording.
example: https://www.example.com/download.mp3
sid:
type: string
description: The unique identifier of the recording.
example: 136285da-4b74-46f1-a016-fe2982fa77c3
source:
type: string
description: How the recording was started.
example: StartConferenceRecordingAPI
enum:
- DialVerb
- Conference
- OutboundAPI
- Trunking
- RecordVerb
- StartCallRecordingAPI
- StartConferenceRecordingAPI
start_time:
type: string
description: The timestamp of when the recording was started.
example: Thu, 15 Jun 2023 09:56:45 +0000
status:
type: string
description: The status of the recording.
enum:
- processing
- absent
- completed
- deleted
example: completed
subresource_uris:
type: object
description: A list of related resources identified by their relative URIs.
example:
transcriptions: null
additionalProperties: 'true'
uri:
type: string
description: The relative URI for this recording.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings/136285da-4b74-46f1-a016-fe2982fa77c3.json
recordings_ConferenceRecordingResourceIndex:
type: object
title: Multiple conference recording resources
example:
participants: []
end: '0'
first_page_uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20
page: '0'
page_size: '20'
start: '0'
uri: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20
properties:
recordings:
type: array
items:
$ref: '#/components/schemas/recordings_ConferenceRecordingResource'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: '19'
first_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?page=0&pagesize=20
example: accepted
next_page_uri:
type: string
description: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=1&PageSize=1&PageToken=MTY4AjgyNDkwNzIxMQ
example: accepted
page:
type: integer
description: Current page number, zero-indexed.
example: '0'
page_size:
type: integer
description: The number of items on the page
example: '20'
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: '0'
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Conferences/6dc6cc1a-1ba1-4351-86b8-4c22c95cd98f/Recordings.json?Page=0&PageSize=1
participants:
type: array
description: List of participant resources.
items:
type: object
example: []
recordings_PlayBeep:
type: boolean
description: Whether to play a beep when recording is started.
example: 'false'
default: 'true'
recordings_SendRecordingUrl:
type: boolean
description: Whether to send RecordingUrl in webhooks.
example: 'false'
default: 'true'
recordings_TexmlGetCallRecordingsResponseBody:
type: object
title: Multiple recording resources
properties:
recordings:
type: array
items:
$ref: '#/components/schemas/TexmlGetCallRecordingResponseBody'
end:
type: integer
description: The number of the last element on the page, zero-indexed.
example: '19'
first_page_uri:
type: string
format: uri
description: Relative uri to the first page of the query results
previous_page_uri:
type: string
format: uri
description: Relative uri to the previous page of the query results
next_page_uri:
type: string
description: Relative uri to the next page of the query results
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Calls.json?Page=1&PageSize=1
page:
type: integer
description: Current page number, zero-indexed.
example: '0'
page_size:
type: integer
description: The number of items on the page
example: '20'
start:
type: integer
description: The number of the first element on the page, zero-indexed.
example: '0'
uri:
type: string
description: The URI of the current page.
example: /v2/texml/Accounts/61bf923e-5e4d-4595-a110-56190ea18a1b/Recordings.json?Page=0&PageSize=1
recordings_TwimlRecordingChannels:
type: integer
enum:
- '1'
- '2'
default: '2'
example: '1'
reporting_Error:
type: object
properties:
code:
type: string
example: '10011'
title:
type: string
example: Bad Request
detail:
type: string
example: Invalid parameter value
reporting_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/reporting_Error'
reporting_ErrorResponse_77109e5d17:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/reporting_Error_77109e5d17'
reporting_Error_77109e5d17:
type: object
properties:
code:
type: string
example: '10011'
title:
type: string
example: Bad Request
detail:
type: string
example: Invalid parameter value
reporting_MdrGetDetailResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrDetailResponse'
meta:
$ref: '#/components/schemas/reporting_PaginationMeta_77109e5d17'
reporting_MdrGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrUsageReportResponse'
meta:
$ref: '#/components/schemas/reporting_PaginationMeta_77109e5d17'
reporting_PaginationMeta:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
reporting_PaginationMeta_77109e5d17:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
reson8_models:
type: string
enum:
- reson8/turns
settings:
type: object
description: The settings associated with the authentication provider.
required:
- idp_entity_id
- idp_sso_target_url
- idp_cert_fingerprint
properties:
idp_entity_id:
type: string
description: The Entity ID for the identity provider (IdP).
format: uri
example: https://myorg.myidp.com/saml/metadata
idp_sso_target_url:
type: string
description: The SSO target url for the identity provider (IdP).
format: uri
example: https://myorg.myidp.com/trust/saml2/http-post/sso
idp_cert_fingerprint:
type: string
description: The certificate fingerprint for the identity provider (IdP)
example: 13:38:C7:BB:C9:FF:4A:70:38:3A:E3:D9:5C:CD:DB:2E:50:1E:80:A7
idp_cert_fingerprint_algorithm:
type: string
description: The algorithm used to generate the identity provider's (IdP) certificate fingerprint
enum:
- sha1
- sha256
- sha384
- sha512
default: sha1
example: sha256
settings_url:
type: string
description: The URL for the identity provider metadata file to populate the settings automatically. If the settings
attribute is provided, that will be used instead.
format: uri
example: https://myorg.myidp.com/saml/metadata
short_name:
type: string
description: The short name associated with the authentication provider. This must be unique and URL-friendly, as it's
going to be part of the login URL.
example: myorg
siprec_siprec_Error:
type: object
required:
- code
- title
properties:
code:
type: integer
format: int32
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
description: JSON pointer (RFC6901) to the offending entity.
parameter:
type: string
description: Indicates which query parameter caused the error.
meta:
type: object
additionalProperties: true
skip_address_verification:
type: boolean
description: An optional boolean value specifying if verification of the address should be skipped or not. UserAddresses
are generally used for shipping addresses, and failure to validate your shipping address will likely result in a failure
to deliver SIM cards or other items ordered from Telnyx. Do not use this parameter unless you are sure that the address
is correct even though it cannot be validated. If this is set to any value other than true, verification of the address
will be attempted, and the user address will not be allowed if verification fails. If verification fails but suggested
values are available that might make the address correct, they will be present in the response as well. If this value
is set to true, then the verification will not be attempted. Defaults to false (verification will be performed).
default: false
soniox_models:
type: string
enum:
- soniox/stt-rt-v4
speech-to-text_Error:
required:
- code
- title
properties:
code:
type: string
format: integer
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
format: json-pointer
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
speech-to-text_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/speech-to-text_Error'
speechmatics_models:
type: string
description: 'Available Speechmatics models. `speechmatics/linden-1` is a preview, vendor-hosted model that accepts
only 16 kHz raw audio: set `input_format` to `linear16` or `linear32` and `sample_rate` to `16000`. `mp3`, `wav`,
and other sample rates are not supported for this model.'
enum:
- speechmatics/standard
- speechmatics/linden-1
spend-limits_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
source:
type: object
properties:
pointer:
type: string
required:
- errors
spend-limits_PaginationMeta:
type: object
properties:
total_pages:
type: integer
example: 1
total_results:
type: integer
example: 2
page_number:
type: integer
example: 1
page_size:
type: integer
example: 2
standard_CdrGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CdrUsageReportResponseLegacy'
meta:
$ref: '#/components/schemas/standard_PaginationMeta_ffba4faa88'
standard_Error:
type: object
properties:
code:
type: string
title: Telnyx error code
detail:
type: string
title: Error details
title:
type: string
title: Error title
required:
- detail
title: Error
standard_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/standard_Error'
title: Errors
title: ErrorResponse
standard_ErrorResponse_ffba4faa88:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/standard_Error_ffba4faa88'
title: Errors
title: ErrorResponse
standard_Error_ffba4faa88:
type: object
properties:
code:
type: string
title: Telnyx error code
detail:
type: string
title: Error details
title:
type: string
title: Error title
required:
- detail
title: Error
standard_MdrGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrUsageReportResponseLegacy'
meta:
$ref: '#/components/schemas/standard_PaginationMeta'
standard_MdrGetUsageReportsResponse_ffba4faa88:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/MdrUsageReportResponseLegacy'
meta:
$ref: '#/components/schemas/standard_PaginationMeta_ffba4faa88'
standard_PaginationMeta:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
standard_PaginationMeta_ffba4faa88:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
standard_TelcoDataGetUsageReportsResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/TelcoDataUsageReportResponse'
meta:
$ref: '#/components/schemas/standard_PaginationMeta_ffba4faa88'
stored-payment-transactions_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
title:
type: string
detail:
type: string
code:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
source:
type: object
properties:
pointer:
type: string
street_address:
type: string
description: The primary street address information about the address.
example: 600 Congress Avenue
taggings_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
telephony-credentials_ErrorObject:
type: object
properties:
code:
description: Telnyx error code. Edge idempotency errors use 10027 or 10036. Fallback 404/500 responses from the
framework may use string status codes ('404', '500') instead.
enum:
- '10015'
- '10016'
- '10027'
- '10036'
- '404'
- '500'
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
title:
type: string
required:
- code
- title
telephony-credentials_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/telephony-credentials_ErrorObject'
required:
- errors
telnyx_models:
type: string
enum:
- openai/whisper-tiny
- openai/whisper-large-v3-turbo
text-to-speech_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
description: Error code.
title:
type: string
description: Error title.
detail:
type: string
description: Detailed error description.
text-to-speech_ValidationErrorResponse:
type: object
properties:
errors:
type: object
description: Validation error details keyed by field name.
additionalProperties:
type: array
items:
type: string
toll-free-verification_EntityType:
title: EntityType
type: string
enum:
- SOLE_PROPRIETOR
- PRIVATE_PROFIT
- PUBLIC_PROFIT
- NON_PROFIT
- GOVERNMENT
description: Business entity classification
toll-free-verification_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
toll-free-verification_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/toll-free-verification_Error'
type: object
transcriptions-search_Error:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
meta:
type: object
additionalProperties: true
transcriptions-search_PaginationMeta:
type: object
description: Pagination metadata following the standard Telnyx V2 API format.
required:
- total_pages
- total_results
- page_number
- page_size
properties:
total_pages:
type: integer
description: Total number of pages.
example: 1
total_results:
type: integer
description: Total number of matching results across all queried regions.
example: 42
page_number:
type: integer
description: Current page number (1-based), matching the requested page[number].
example: 1
page_size:
type: integer
description: Number of results per page, matching the requested page[size].
example: 20
usage-reports_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorRecord'
usage-reports_RecordType:
type: object
description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records
properties:
record_type:
type: string
description: Telnyx Product type
example: conversation_event
product_dimensions:
type: array
description: Telnyx Product Dimensions
example:
- direction
- currency
- message_type
items:
type: string
product_metrics:
type: array
description: Telnyx Product Metrics
example:
- cost
- billed_sec
items:
type: string
usage_reports_usage_reports_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorRecord'
usage_reports_usage_reports_RecordType:
type: object
description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records
properties:
record_type:
type: string
description: Telnyx Product type
example: conversation_event
product_dimensions:
type: array
description: Telnyx Product Dimensions
example:
- direction
- currency
- message_type
items:
type: string
product_metrics:
type: array
description: Telnyx Product Metrics
example:
- cost
- billed_sec
items:
type: string
usage_reports_usage_reports_SourceResponse:
type: object
properties:
pointer:
type: string
description: A JSON Pointer [RFC6901] to the associated entity in the request document
example: /title
parameter:
type: string
description: a string indicating which URI query parameter caused the error
example: metrics
usage_reports_usage_reports_UsageReportsOptionsRecord:
type: object
description: An object following one of the schemas published in https://developers.telnyx.com/docs/api/v2/detail-records
properties:
product:
type: string
description: Telnyx Product
example: wireless
product_dimensions:
type: array
description: Telnyx Product Dimensions
example:
- mnc
- mcc
- sim_card_id
- sim_group_name
items:
type: string
product_metrics:
type: array
description: Telnyx Product Metrics
example:
- uplink_data_bytes
- downlink_data
- downlink_data_bytes
- uplink_data
- data_cost
items:
type: string
record_types:
type: array
description: Subproducts if applicable
items:
$ref: '#/components/schemas/usage_reports_usage_reports_RecordType'
user-addresses_UserAddress:
type: object
title: UserAddress
properties:
id:
type: string
format: uuid
description: Uniquely identifies the user address.
example: c3527e69-dc5a-4b3e-8f44-99d209f83c1d
record_type:
type: string
description: Identifies the type of the resource.
example: user_address
customer_reference:
$ref: '#/components/schemas/customer_reference'
first_name:
$ref: '#/components/schemas/user-addresses_first_name_26a215df92'
last_name:
$ref: '#/components/schemas/user-addresses_last_name_26a215df92'
business_name:
$ref: '#/components/schemas/user-addresses_business_name_26a215df92'
phone_number:
$ref: '#/components/schemas/user-addresses_phone_number_26a215df92'
street_address:
$ref: '#/components/schemas/user-addresses_street_address_26a215df92'
extended_address:
$ref: '#/components/schemas/user-addresses_extended_address_26a215df92'
locality:
$ref: '#/components/schemas/user-addresses_locality_26a215df92'
administrative_area:
$ref: '#/components/schemas/user-addresses_administrative_area_26a215df92'
neighborhood:
$ref: '#/components/schemas/user-addresses_neighborhood_26a215df92'
borough:
$ref: '#/components/schemas/user-addresses_borough_26a215df92'
postal_code:
$ref: '#/components/schemas/user-addresses_postal_code_26a215df92'
country_code:
$ref: '#/components/schemas/user-addresses_country_code_26a215df92'
created_at:
type: string
description: ISO 8601 formatted date indicating when the resource was created.
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date indicating when the resource was updated.
example: '2018-02-02T22:25:27.521Z'
user-addresses_UserAddressCreate:
type: object
required:
- first_name
- last_name
- business_name
- street_address
- locality
- country_code
properties:
customer_reference:
$ref: '#/components/schemas/customer_reference'
first_name:
$ref: '#/components/schemas/user-addresses_first_name_26a215df92'
last_name:
$ref: '#/components/schemas/user-addresses_last_name_26a215df92'
business_name:
$ref: '#/components/schemas/user-addresses_business_name_26a215df92'
phone_number:
$ref: '#/components/schemas/user-addresses_phone_number_26a215df92'
street_address:
$ref: '#/components/schemas/user-addresses_street_address_26a215df92'
extended_address:
$ref: '#/components/schemas/user-addresses_extended_address_26a215df92'
locality:
$ref: '#/components/schemas/user-addresses_locality_26a215df92'
administrative_area:
$ref: '#/components/schemas/user-addresses_administrative_area_26a215df92'
neighborhood:
$ref: '#/components/schemas/user-addresses_neighborhood_26a215df92'
borough:
$ref: '#/components/schemas/user-addresses_borough_26a215df92'
postal_code:
$ref: '#/components/schemas/user-addresses_postal_code_26a215df92'
country_code:
$ref: '#/components/schemas/user-addresses_country_code_26a215df92'
skip_address_verification:
$ref: '#/components/schemas/skip_address_verification'
user-addresses_administrative_area:
type: string
description: The locality of the user address. For US addresses, this corresponds to the state of the address.
example: TX
user-addresses_administrative_area_26a215df92:
type: string
description: The locality of the user address. For US addresses, this corresponds to the state of the address.
example: TX
user-addresses_borough:
type: string
description: The borough of the user address. This field is not used for addresses in the US but is used for some international
addresses.
example: Guadalajara
user-addresses_borough_26a215df92:
type: string
description: The borough of the user address. This field is not used for addresses in the US but is used for some international
addresses.
example: Guadalajara
user-addresses_business_name:
type: string
description: The business name associated with the user address.
example: Toy-O'Kon
user-addresses_business_name_26a215df92:
type: string
description: The business name associated with the user address.
example: Toy-O'Kon
user-addresses_country_code:
type: string
description: The two-character (ISO 3166-1 alpha-2) country code of the user address.
example: US
user-addresses_country_code_26a215df92:
type: string
description: The two-character (ISO 3166-1 alpha-2) country code of the user address.
example: US
user-addresses_extended_address:
type: string
description: Additional street address information about the user address such as, but not limited to, unit number or
apartment number.
example: 14th Floor
user-addresses_extended_address_26a215df92:
type: string
description: Additional street address information about the user address such as, but not limited to, unit number or
apartment number.
example: 14th Floor
user-addresses_first_name:
type: string
description: The first name associated with the user address.
example: Alfred
user-addresses_first_name_26a215df92:
type: string
description: The first name associated with the user address.
example: Alfred
user-addresses_last_name:
type: string
description: The last name associated with the user address.
example: Foster
user-addresses_last_name_26a215df92:
type: string
description: The last name associated with the user address.
example: Foster
user-addresses_locality:
type: string
description: The locality of the user address. For US addresses, this corresponds to the city of the address.
example: Austin
user-addresses_locality_26a215df92:
type: string
description: The locality of the user address. For US addresses, this corresponds to the city of the address.
example: Austin
user-addresses_neighborhood:
type: string
description: The neighborhood of the user address. This field is not used for addresses in the US but is used for some
international addresses.
example: Ciudad de los deportes
user-addresses_neighborhood_26a215df92:
type: string
description: The neighborhood of the user address. This field is not used for addresses in the US but is used for some
international addresses.
example: Ciudad de los deportes
user-addresses_phone_number:
type: string
description: The phone number associated with the user address.
example: '+12125559000'
user-addresses_phone_number_26a215df92:
type: string
description: The phone number associated with the user address.
example: '+12125559000'
user-addresses_postal_code:
type: string
description: The postal code of the user address.
example: '78701'
user-addresses_postal_code_26a215df92:
type: string
description: The postal code of the user address.
example: '78701'
user-addresses_street_address:
type: string
description: The primary street address information about the user address.
example: 600 Congress Avenue
user-addresses_street_address_26a215df92:
type: string
description: The primary street address information about the user address.
example: 600 Congress Avenue
user-tags_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
users_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
title:
type: string
source:
type: object
properties:
pointer:
type: string
users_PaginationMeta:
title: Pagination Meta
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
validate_address:
type: boolean
description: 'Indicates whether or not the address should be validated for emergency use upon creation or not. This
should be left with the default value of `true` unless you have used the `/addresses/actions/validate` endpoint to
validate the address separately prior to creation. If an address is not validated for emergency use upon creation
and it is not valid, it will not be able to be used for emergency services. In an address record, this flag indicates
whether emergency validation was performed at creation: `true` means the record passed emergency validation before
it was created; `false` means validation was skipped during this creation request, and the address may have been validated
separately. This flag is not a current validity status; emergency use still requires a valid address.'
example: true
default: true
verified-numbers_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
properties:
url:
type: string
description: URL with additional information on the error.
type: object
verified-numbers_Meta:
type: object
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
verify_Error:
required:
- code
- title
properties:
code:
type: string
example: '10015'
title:
type: string
example: Invalid sorting value
detail:
type: string
example: The value provided for sorting is not valid. Check the value used and try again.
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
example: /sort
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
properties:
url:
type: string
description: URL with additional information on the error.
example: https://developers.telnyx.com/docs/overview/errors/10015
type: object
verify_Meta:
type: object
required:
- total_pages
- total_results
- page_size
- page_number
properties:
total_pages:
type: integer
example: 3
total_results:
type: integer
example: 55
page_number:
type: integer
example: 2
page_size:
type: integer
example: 25
video_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
voice-channels_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
voice-designs_ErrorObject:
type: object
description: A single error object.
properties:
code:
type: string
description: Telnyx-specific error code.
title:
type: string
description: Short, human-readable summary of the error.
detail:
type: string
description: Detailed, human-readable explanation of the error.
source:
type: object
description: Reference to the source of the error.
properties:
pointer:
type: string
description: A JSON Pointer (RFC 6901) to the field that caused the error.
voice-designs_ErrorResponse:
type: object
description: Standard error response envelope.
properties:
errors:
type: array
items:
$ref: '#/components/schemas/voice-designs_ErrorObject'
example:
errors:
- code: '10005'
title: Resource not found
detail: Voice design not found
voice-designs_PaginationMeta:
type: object
description: Pagination metadata returned with list responses.
properties:
page_number:
type: integer
description: Current page number (1-based).
page_size:
type: integer
description: Number of results per page.
total_results:
type: integer
description: Total number of results across all pages.
total_pages:
type: integer
description: Total number of pages.
example:
page_number: 1
page_size: 20
total_results: 42
total_pages: 3
voice-sdk-debug_PaginationMeta:
type: object
title: Pagination Meta
properties:
total_pages:
type: integer
example: 1
total_results:
type: integer
example: 1
page_number:
type: integer
example: 1
page_size:
type: integer
example: 20
web-search_GatewayError:
type: object
description: Standard Telnyx JSON:API error envelope returned by the API Gateway for authentication failures (401).
required:
- errors
properties:
errors:
type: array
items:
type: object
required:
- code
- title
properties:
code:
type: string
description: Telnyx error code.
title:
type: string
description: Error title.
detail:
type: string
description: Human-readable error detail.
source:
type: object
properties:
pointer:
type: string
meta:
type: object
properties:
url:
type: string
format: uri
webhook_delivery:
description: Record of all attempts to deliver a webhook.
properties:
id:
description: Uniquely identifies the webhook_delivery record.
type: string
format: uuid
example: f5586561-8ff0-4291-a0ac-84fe544797bd
user_id:
description: Uniquely identifies the user that owns the webhook_delivery record.
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
record_type:
description: Identifies the type of the resource.
type: string
example: webhook_delivery
status:
description: 'Delivery status: ''delivered'' when successfuly delivered or ''failed'' if all attempts have failed.'
enum:
- delivered
- failed
type: string
webhook:
description: Original webhook JSON data. Payload fields vary according to event type.
type: object
properties:
record_type:
type: string
example: event
enum:
- event
description: Identifies the type of the resource.
event_type:
type: string
example: webhook.command
description: The type of event being delivered.
id:
type: string
format: uuid
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
description: Identifies the type of resource.
occurred_at:
type: string
format: date-time
example: '2018-02-02T22:25:27.521992Z'
description: ISO 8601 datetime of when the event occurred.
payload:
type: object
additionalProperties: true
example:
record_type: event
id: C9C0797E-901D-4349-A33C-C2C8F31A92C2
event_type: call_initiated
occurred_at: '2020-08-10T13:02:01.000Z'
payload:
useful: information
started_at:
description: ISO 8601 timestamp indicating when the first request attempt was initiated.
type: string
format: date-time
example: '2020-08-10T14:00:00.000Z'
finished_at:
description: ISO 8601 timestamp indicating when the last webhook response has been received.
type: string
format: date-time
example: '2020-08-10T14:00:05.595Z'
attempts:
description: Detailed delivery attempts, ordered by most recent.
type: array
items:
$ref: '#/components/schemas/attempt'
example:
- status: delivered
started_at: '2020-08-10T14:00:05.364Z'
finished_at: '2020-08-10T14:00:05.595Z'
http:
request:
url: https://fallback.example.com/webhooks
headers:
- - Accept
- '*/*'
response:
status: 200
headers:
- - Content-Type
- text/html
body: All good.
- status: failed
started_at: '2020-08-10T14:00:05.004Z'
finished_at: '2020-08-10T14:00:05.360Z'
http:
request:
url: https://typo.example.com/webhooks
headers:
- - Accept
- '*/*'
response:
status: 404
headers:
- - Content-Type
- text/html
- - Pragma
- no-cache
body: Oops. Not found.
errors:
- 75499
wireless-public_Error:
type: object
properties:
code:
type: string
example: '10011'
title:
type: string
example: Bad Request
detail:
type: string
example: Invalid parameter value
wireless-public_ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/wireless-public_Error'
wireless-public_ErrorResponse_ea8f2ad863:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/wireless-public_Error_ea8f2ad863'
wireless-public_Error_ea8f2ad863:
type: object
properties:
code:
type: string
example: '10011'
title:
type: string
example: Bad Request
detail:
type: string
example: Invalid parameter value
wireless-public_ExternalWdrGetDetailResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ExternalWdrDetailRecordDto'
meta:
$ref: '#/components/schemas/wireless-public_PaginationMeta_ea8f2ad863'
wireless-public_PaginationMeta:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
wireless-public_PaginationMeta_ea8f2ad863:
type: object
properties:
total_pages:
type: integer
format: int32
example: 3
total_results:
type: integer
format: int32
example: 55
page_number:
type: integer
format: int32
example: 2
page_size:
type: integer
format: int32
example: 25
wireless_Country:
type: object
title: Country
properties:
country_code:
type: string
description: ISO 3166-1 Alpha-2 Country Code.
example: US
required:
- country_code
wireless_CreatedAt:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
wireless_CreatedAt_c5290d5308:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
wireless_Error:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
wireless_Error_c5290d5308:
required:
- code
- title
properties:
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
parameter:
description: Indicates which query parameter caused the error.
type: string
meta:
type: object
additionalProperties: true
type: object
wireless_Errors:
properties:
errors:
type: array
items:
$ref: '#/components/schemas/wireless_Error'
type: object
wireless_Id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
wireless_Id_c5290d5308:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
wireless_MCC:
type: object
title: Mobile Country Code
properties:
mcc:
type: string
description: Mobile Country Code.
example: '310'
required:
- mcc
wireless_PLMN:
type: object
title: Public land mobile network
properties:
plmn:
type: string
description: Public land mobile network code (MCC + MNC).
example: '310260'
required:
- plmn
wireless_PrivateWirelessGateway:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
network_id:
type: string
format: uuid
description: The identification of the related network resource.
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
record_type:
type: string
readOnly: true
example: private_wireless_gateway
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
name:
description: The private wireless gateway name.
type: string
example: My private wireless gateway
address_mode:
description: The address mode of the private wireless gateway. With static, each SIM card gets a fixed IP address
from the gateway's IP range that is preserved across sessions. With dynamic, IP addresses are assigned by the
network at attach time and may change between sessions.
type: string
enum:
- static
- dynamic
example: dynamic
region_code:
description: The name of the region where the Private Wireless Gateway is deployed.
type: string
example: dc2
default: null
status:
$ref: '#/components/schemas/PrivateWirelessGatewayStatus'
ip_range:
type: string
description: IP block used to assign IPs to the SIM cards in the Private Wireless Gateway.
example: 100.64.1.0/24
readOnly: true
default: null
assigned_resources:
type: array
description: A list of the resources that have been assigned to the Private Wireless Gateway.
items:
$ref: '#/components/schemas/PWGAssignedResourcesSummary'
wireless_Region:
type: object
title: Region
properties:
code:
type: string
description: The unique code of the region.
example: dc2
name:
type: string
description: The name of the region.
example: Washington DC, US
inserted_at:
type: string
format: date-time
description: Timestamp when the region was inserted.
updated_at:
type: string
format: date-time
description: Timestamp when the region was last updated.
required:
- code
- name
wireless_SIMCardAction:
type: object
title: SIMCardAction
description: This object represents a SIM card action. It allows tracking the current status of an operation that impacts
the SIM card.
properties:
id:
$ref: '#/components/schemas/wireless_Id_c5290d5308'
record_type:
type: string
example: sim_card_action
readOnly: true
sim_card_id:
type: string
format: uuid
description: The related SIM card identifier.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
action_type:
type: string
description: "The operation type. It can be one of the following: \n\n enable - move the\
\ SIM card to the enabled status \n enable_standby_sim_card - move a SIM card\
\ previously on the standby status to the enabled status after it consumes data. \n\
\ disable - move the SIM card to the disabled status \n set_standby\
\ - move the SIM card to the standby status \n enable_voice - enable voice calling\
\ on the SIM card \n disable_voice - disable voice calling on the SIM card \n "
enum:
- enable
- enable_standby_sim_card
- disable
- set_standby
- enable_voice
- disable_voice
readOnly: true
example: enable
status:
type: object
properties:
value:
type: string
description: The current status of the SIM card action.
enum:
- in-progress
- completed
- failed
- interrupted
readOnly: true
example: completed
reason:
type: string
description: It describes why the SIM card action is in the current status. This will be null for
self-explanatory statuses, such as in-progress and completed but will include further
information on statuses like interrupted and failed.
readOnly: true
example: The data limit was exceeded.
settings:
type:
- object
- 'null'
description: A JSON object representation of the action params.
example: {}
readOnly: true
additionalProperties: true
created_at:
$ref: '#/components/schemas/wireless_CreatedAt_c5290d5308'
updated_at:
$ref: '#/components/schemas/wireless_UpdatedAt_c5290d5308'
wireless_UpdatedAt:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
wireless_UpdatedAt_c5290d5308:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
wireless_WirelessBlocklist:
type: object
properties:
id:
type: string
format: uuid
description: Identifies the resource.
readOnly: true
example: 6a09cdc3-8948-47f0-aa62-74ac943d6c58
created_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was created.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
updated_at:
type: string
description: ISO 8601 formatted date-time indicating when the resource was updated.
readOnly: true
example: '2018-02-02T22:25:27.521Z'
name:
description: The wireless blocklist name.
type: string
example: My wireless blocklist.
type:
description: The type of the wireless blocklist.
type: string
enum:
- country
- mcc
- plmn
default: country
example: country
values:
description: Values to block. The values here depend on the `type` of Wireless Blocklist.
type: array
items:
anyOf:
- $ref: '#/components/schemas/CountryCode'
- $ref: '#/components/schemas/MobileCountryCode'
- $ref: '#/components/schemas/PLMNCode'
example:
- CA
- MX
- US
x402-transactions_ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
title:
type: string
detail:
type: string
meta:
type: object
properties:
url:
type: string
source:
type: object
properties:
pointer:
type: string
x402-transactions_PaginationMeta:
type: object
properties:
page_number:
type: integer
description: The current page number.
page_size:
type: integer
description: The number of results per page.
total_pages:
type: integer
description: The total number of pages.
total_results:
type: integer
description: The total number of results.
xai_models:
type: string
enum:
- xai/grok-stt
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: API key
description: 'Telnyx API key supplied as `Authorization: Bearer `. In production, auth may be validated by the
API gateway and forwarded via Telnyx auth headers.'
Payment:
type: apiKey
in: header
name: Authorization
description: 'Machine Payment Protocol credential used on paid retries, sent as `Authorization: Payment ...`. Obtained
by paying a challenge returned in the `WWW-Authenticate` header of a 402 response. This is not a Telnyx API key; initial
challenge requests use standard bearer authentication instead.'
agent-memory_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key
bearerAuth:
type: http
scheme: bearer
branded-calling_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
collections_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Collections and results are automatically scoped to the authenticated user's organization.
number-reputation_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
oauthClientAuth:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
authorizationCode:
authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
tokenUrl: https://api.telnyx.com/v2/oauth/token
refreshUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
description: OAuth 2.0 authentication for Telnyx API and MCP integrations
outbound-voice-profiles_bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
pay-connectors_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key, not the processor bearer token.
pronunciation-dicts_bearerAuth:
type: http
scheme: bearer
description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
rcs-registration_bearerAuth:
type: http
scheme: bearer
bearerFormat: API key
stored-payment-transactions_bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
telnyxApiKey:
type: http
scheme: bearer
description: Management-only Telnyx account credential.
transcriptions-search_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Results are automatically scoped to the authenticated user's organization.
web-search_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key
webhooks:
CallAIGatherEnded:
post:
summary: Call AI Gather Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallAIGatherEndedEvent'
example:
data:
record_type: event
event_type: call.ai_gather.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
status: valid
message_history:
- content: Hello, can you tell me your age and where you live?
role: assistant
- content: Hello, I'm 29 and I live in Paris?
role: user
result:
age: 29
city: Paris
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallAIGatherEnded
tags:
- Callbacks
CallAIGatherMessageHistoryUpdated:
post:
summary: Call AI Gather Message History Updated
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallAIGatherMessageHistoryUpdatedEvent'
example:
data:
record_type: event
event_type: call.ai_gather.message_history_updated
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
message_history:
- content: Hello, can you tell me your age and where you live?
role: assistant
- content: Hello, I'm 29 and I live in Paris?
role: user
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallAIGatherMessageHistoryUpdated
tags:
- Callbacks
CallAIGatherPartialResults:
post:
summary: Call AI Gather Partial Results
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallAIGatherPartialResultsEvent'
example:
data:
record_type: event
event_type: call.ai_gather.partial_results
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:T02llQxIyaRkhfRKxgAP8nY511EhFLizdvdUKJiSw8d6A9BborherQ
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
message_history:
- content: Hello, can you tell me your age and where you live?
role: assistant
- content: Hello, I'm 29 and I live in Paris?
role: user
partial_results:
age: 29
city: Paris
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallAIGatherPartialResults
tags:
- Callbacks
TexmlAiGatherWebhook:
post:
operationId: TexmlAiGather
summary: TeXML AI Gather
description: 'Webhook sent when AI Gather completes with transcription results.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlAiGatherWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
Base64MessageHistory: W3sicm9sZSI6InVzZXIiLCJjb250ZW50IjoiSGVsbG8ifV0=
Base64Result: eyJzdGF0dXMiOiJ2YWxpZCIsInJlc3VsdCI6eyJ0ZXh0IjoiSSB3b3VsZCBsaWtlIHRvIHNjaGVkdWxlIGFuIGFwcG9pbnRtZW50In19
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId: '1234567890'
From: '+35319605860'
Status: valid
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlCallAmdWebhook:
post:
operationId: TexmlCallAmd
summary: TeXML Call AMD
description: 'Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCallAmdWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
AnsweredBy: human
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId: '1234567890'
MachineDetectionDuration: '2500'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlCallAnsweredWebhook:
post:
operationId: TexmlCallAnswered
summary: TeXML Call Answered
description: 'Webhook sent when a TeXML call is answered.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCallAnsweredWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallDuration: '15'
CallInitiatedAt: '2024-01-15T10:30:26.028Z'
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus: in-progress
CallbackSource: call-progress-events
CallerId: John Doe
Codec: PCMU
ConnectionId: '1234567890'
ErrorCode: '10001'
ErrorMessage: Call failed
From: '+35319605860'
ParentCallSid: v3:parent-call-id
ParentCallSidLegacy: v3:parent-call-id
SamplingRate: '8000'
SequenceNumber: 2
ShakenStirAttestation: A
ShakenStirValidated: true
Timestamp: '2024-01-15T10:30:00Z'
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlCallCompletedWebhook:
post:
operationId: TexmlCallCompleted
summary: TeXML Call Completed
description: 'Webhook sent when a TeXML call is completed.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCallCompletedWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
AnsweredTime: '2024-01-15T10:30:15Z'
CallControlId: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallDuration: '45'
CallInitiatedAt: '2024-01-15T10:30:26.028Z'
CallLegId: abc123-leg1
CallQualityStats: '{"mos":4.2,"jitter":10,"packet_loss":0.5}'
CallSessionId: session-abc123
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus: completed
CallbackSource: call-progress-events
CallerId: John Doe
ConnectionId: '1234567890'
DialCallDuration: '120'
DialCallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
DialCallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
DialCallStatus: completed
EndTime: '2024-01-15T10:31:00Z'
ErrorCode: '10001'
ErrorMessage: Call failed
From: '+35319605860'
HangupCause: normal_clearing
HangupSource: caller
OccurredAt: '2024-01-15T10:31:00Z'
OrganizationId: org-abc123
ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
RecordingDuration: '90'
RecordingUrl: https://api.telnyx.com/v2/recordings/abc123.wav
SequenceNumber: 3
ShakenStirAttestation: A
ShakenStirValidated: true
SipHangupCause: '200'
StartTime: '2024-01-15T10:30:00Z'
Timestamp: '2024-01-15T10:30:00Z'
To: '+13129457420'
UserId: f5586561-8ff0-4291-a51b-c7dfe4139ff9
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlCallDtmfWebhook:
post:
operationId: TexmlCallDtmf
summary: TeXML Call DTMF
description: 'Webhook sent when a DTMF digit is received during a TeXML call.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCallDtmfWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallInitiatedAt: '2024-01-15T10:30:26.028Z'
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus: dtmf
CallbackSource: call-progress-events
CallerId: John Doe
ConnectionId: '1234567890'
Digit: '5'
ErrorCode: '10001'
ErrorMessage: Call failed
From: '+35319605860'
ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
SequenceNumber: 3
ShakenStirAttestation: A
ShakenStirValidated: true
Timestamp: '2024-01-15T10:30:00Z'
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlCallInitiatedWebhook:
post:
operationId: TexmlCallInitiated
summary: TeXML Call Initiated
description: 'Webhook sent when a TeXML call is initiated.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCallInitiatedWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallInitiatedAt: '2024-01-15T10:30:26.028Z'
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus: initiated
CallbackSource: call-progress-events
CallerId: John Doe
ConnectionId: '1234567890'
ErrorCode: '10001'
ErrorMessage: Call failed
From: '+35319605860'
ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
SequenceNumber: 0
ShakenStirAttestation: A
ShakenStirValidated: true
Timestamp: '2024-01-15T10:30:00Z'
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlCallRingingWebhook:
post:
operationId: TexmlCallRinging
summary: TeXML Call Ringing
description: 'Webhook sent when a TeXML call is ringing.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlCallRingingWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallDuration: '10'
CallInitiatedAt: '2024-01-15T10:30:26.028Z'
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus: ringing
CallbackSource: call-progress-events
CallerId: John Doe
ConnectionId: '1234567890'
ErrorCode: '10001'
ErrorMessage: Call failed
From: '+35319605860'
ParentCallSid: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
ParentCallSidLegacy: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
SequenceNumber: 1
ShakenStirAttestation: A
ShakenStirValidated: true
Timestamp: '2024-01-15T10:30:00Z'
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlConferenceEndWebhook:
post:
operationId: TexmlConferenceEnd
summary: TeXML Conference End
description: 'Webhook sent when a TeXML conference ends.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlConferenceEndWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType: customer
ConferenceSid: conf_abc123def456
ConnectionId: '1234567890'
FriendlyName: MyConference
From: '+35319605860'
FromSipUri: sip:user@example.com
ParticipantLabel: participant-1
SequenceNumber: 5
StatusCallbackEvent: conference-end
Timestamp: '2024-01-15T11:30:00Z'
To: '+13129457420'
ToSipUri: sip:conference@example.com
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlConferenceJoinWebhook:
post:
operationId: TexmlConferenceJoin
summary: TeXML Conference Join
description: 'Webhook sent when a participant joins a TeXML conference.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlConferenceJoinWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType: customer
ConferenceSid: conf_abc123def456
ConnectionId: '1234567890'
FriendlyName: MyConference
From: '+35319605860'
FromSipUri: sip:user@example.com
ParticipantLabel: participant-1
SequenceNumber: 2
StatusCallbackEvent: participant-join
Timestamp: '2024-01-15T10:31:00Z'
To: '+13129457420'
ToSipUri: sip:conference@example.com
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlConferenceLeaveWebhook:
post:
operationId: TexmlConferenceLeave
summary: TeXML Conference Leave
description: 'Webhook sent when a participant leaves a TeXML conference.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlConferenceLeaveWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType: customer
ConferenceSid: conf_abc123def456
ConnectionId: '1234567890'
FriendlyName: MyConference
From: '+35319605860'
FromSipUri: sip:user@example.com
ParticipantLabel: participant-1
SequenceNumber: 4
StatusCallbackEvent: participant-leave
Timestamp: '2024-01-15T11:00:00Z'
To: '+13129457420'
ToSipUri: sip:conference@example.com
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlConferenceSpeakerWebhook:
post:
operationId: TexmlConferenceSpeaker
summary: TeXML Conference Speaker
description: 'Webhook sent when a participant starts or stops speaking in a TeXML conference.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlConferenceSpeakerWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType: customer
ConferenceSid: conf_abc123def456
ConnectionId: '1234567890'
FriendlyName: MyConference
From: '+35319605860'
FromSipUri: sip:user@example.com
ParticipantLabel: participant-1
SequenceNumber: 3
StatusCallbackEvent: participant-speech-start
Timestamp: '2024-01-15T10:35:00Z'
To: '+13129457420'
ToSipUri: sip:conference@example.com
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlConferenceStartWebhook:
post:
operationId: TexmlConferenceStart
summary: TeXML Conference Start
description: 'Webhook sent when a TeXML conference starts.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlConferenceStartWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallingPartyType: customer
ConferenceSid: conf_abc123def456
ConnectionId: '1234567890'
FriendlyName: MyConference
From: '+35319605860'
FromSipUri: sip:user@example.com
ParticipantLabel: participant-1
SequenceNumber: 0
StatusCallbackEvent: conference-start
Timestamp: '2024-01-15T10:30:00Z'
To: '+13129457420'
ToSipUri: sip:conference@example.com
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlGatherWebhook:
post:
operationId: TexmlGather
summary: TeXML Gather
description: 'Webhook sent when a Gather command completes (sent to the action URL).
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlGatherWebhookSchema'
example:
AccountSid: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b
CallSid: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w
CallSidLegacy: v2:DPNqxVjTNtQYaKdcKbU0QgRFrQ3YzuAQrVYC4Ggcuq7zTpDkUB7A4w
Confidence: 0.95
Digits: '1'
From: Defaultj35z6@sip.telnyx.com
SpeechResult: Please connect me to sales
To: '+12132045020'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlHttpRequestWebhook:
post:
operationId: TexmlHttpRequest
summary: TeXML HTTP Request
description: 'Webhook sent as response to an HTTP Request instruction.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlHttpRequestWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallerId: John Doe
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId: '1234567890'
From: '+35319605860'
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlQueueWebhook:
post:
operationId: TexmlQueue
summary: TeXML Queue
description: 'Webhook sent for queue status events (triggered by Enqueue command waitUrl).
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlQueueWebhookSchema'
example:
AccountSid: 4e71926f-8f13-450e-b91c-23c2ef786aa6
AvgQueueTime: '45'
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
ConnectionId: '1234567890'
CurrentQueueSize: '3'
From: '+35319605860'
QueuePosition: '2'
QueueSid: my-queue
QueueTime: '30'
To: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlRecordingCompletedWebhook:
post:
operationId: TexmlRecordingCompleted
summary: TeXML Recording Completed
description: 'Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent).
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlRecordingCompletedWebhookSchema'
example:
AccountSid: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b
CallSid: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
CallSidLegacy: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
ConnectionId: '1234567890'
RecordingChannels: 1
RecordingDuration: '5'
RecordingSid: 35094891-3290-4142-b2c2-b2eda57534cf
RecordingSource: DialVerb
RecordingStatus: completed
RecordingUrl: https://recording.com/your-recording-url
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlRecordingInProgressWebhook:
post:
operationId: TexmlRecordingInProgress
summary: TeXML Recording In-Progress
description: 'Webhook sent when a recording starts during a TeXML call (triggered by recordingStatusCallbackEvent).
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlRecordingInProgressWebhookSchema'
example:
AccountSid: cb6cfbbc-eb00-41af-a3f3-0d7b32009e4b
CallSid: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
CallSidLegacy: v2:qiaymU9Ij90xJRRkYGWHOIx_41EVJPrzlny2zC67hwL1wVIUnnMrqQ
ConnectionId: '1234567890'
RecordingChannels: 1
RecordingSid: 35094891-3290-4142-b2c2-b2eda57534cf
RecordingSource: DialVerb
RecordingStatus: in-progress
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlReferStatusWebhook:
post:
operationId: TexmlReferStatus
summary: TeXML Refer Status
description: 'Webhook sent for SIP REFER status updates.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlReferStatusWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
NotifySipResponseCode: '200'
ReferCallStatus: in-progress
ReferSipResponseCode: '202'
Timestamp: '2024-01-15T10:30:00Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlSiprecWebhook:
post:
operationId: TexmlSiprec
summary: TeXML SIPREC
description: 'Webhook sent for SIPREC session status updates.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlSiprecWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
SiprecError: SIPREC connection failed
SiprecEvent: siprec-started
SiprecSid: siprec-abc123
Timestamp: '2024-01-15T10:30:00Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlStreamWebhook:
post:
operationId: TexmlStream
summary: TeXML Stream
description: 'Webhook sent for media streaming status updates.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlStreamWebhookSchema'
example:
AccountSid: f5586561-8ff0-4291-a51b-c7dfe4139ff9
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
StreamError: Connection timeout
StreamEvent: stream-started
StreamName: my_stream
StreamSid: stream-abc123
Timestamp: '2024-01-15T10:30:00Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
TexmlTranscriptionWebhook:
post:
operationId: TexmlTranscription
summary: TeXML Transcription
description: 'Webhook sent when a recording transcription is completed.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TexmlTranscriptionWebhookSchema'
example:
AccountSid: 61bf923e-5e4d-4595-a110-56190ea18a1b
CallSid: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallSidLegacy: v3:9X2vxPDFY2RHSJ1EdMS0RHRksMTg7ldNxdjWbVr9zBjbGjGsSe-aiQ
CallStatus: in-progress
From: '+35319605860'
RecordingSid: 35094891-3290-4142-b2c2-b2eda57534cf
RecordingUrl: https://api.telnyx.com/v2/recordings/abc123.wav
To: '+13129457420'
TranscriptionSid: b08f0fa1-a32c-4218-b3b5-9cf78941ccac
TranscriptionStatus: completed
TranscriptionText: Good morning, how may I help you?
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
artifactCompleted:
post:
summary: artifact.completed
description: 'Sent when an artifact finishes generating -- `summary`, `action_items`, `decisions`, `topics`, `open_questions`
or `custom`. Deliveries are best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds
and roughly doubles per retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce
duplicates; deduplicate on envelope `id`.'
tags:
- Meeting Session Webhooks
parameters:
- name: X-Meeting-Bot-Signature
in: header
required: true
description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp
ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time.
Reject timestamps outside your accepted skew. No bearer token is sent.
schema:
type: string
example: t=1784297100,v1=5e8f...a3c1
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- event
- version
- occurred_at
- data
properties:
id:
type: string
description: Unique event id; deduplicate deliveries on it.
example: whdel_9f2c...
event:
type: string
description: Event type.
enum:
- artifact.completed
version:
type: string
description: Envelope version.
example: '1'
occurred_at:
type: string
format: date-time
description: When the event occurred.
data:
type: object
properties:
session_id:
type: string
description: The meeting session this event belongs to.
example: mtgsess_9b2f...
artifact_id:
type: string
description: Id of the completed artifact.
example: mtgart_4e7c...
type:
type: string
enum:
- summary
- action_items
- decisions
- topics
- open_questions
- custom
description: Type of the completed artifact.
content:
type: object
properties:
text:
type: string
description: Generated artifact text.
description: Generated artifact content.
additionalProperties: false
required:
- text
model_provenance:
type: object
properties:
model:
type: string
provider:
type: string
description: Model that generated the artifact.
additionalProperties: false
required:
- model
- provider
prompt:
anyOf:
- type: string
- type: 'null'
description: The prompt that produced this artifact, or null for a named type. Non-null only when `type`
is `custom`; the five named types always return `null`.
description: Completed artifact, including its generated content.
required:
- session_id
- artifact_id
- type
- content
- model_provenance
- prompt
additionalProperties: false
additionalProperties: false
example:
id: whdel_9f2c...
event: artifact.completed
version: '1'
occurred_at: '2026-06-16T09:06:00Z'
data:
session_id: mtgsess_9b2f...
artifact_id: mtgart_4e7c...
type: summary
content:
text: 'Decisions: hold pricing flat through Q3. Actions: Casey to send the summary.'
model_provenance:
model: example-model
provider: telnyx
prompt: null
responses:
'200':
description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried.
operationId: MeetingArtifactCompletedWebhook
security: []
artifactFailed:
post:
summary: artifact.failed
description: 'Sent when an artifact generation fails. Deliveries are best effort and not guaranteed: up to 5 attempts
with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery timeout, so respond
with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.'
tags:
- Meeting Session Webhooks
parameters:
- name: X-Meeting-Bot-Signature
in: header
required: true
description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp
ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time.
Reject timestamps outside your accepted skew. No bearer token is sent.
schema:
type: string
example: t=1784297100,v1=5e8f...a3c1
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- event
- version
- occurred_at
- data
properties:
id:
type: string
description: Unique event id; deduplicate deliveries on it.
example: whdel_9f2c...
event:
type: string
description: Event type.
enum:
- artifact.failed
version:
type: string
description: Envelope version.
example: '1'
occurred_at:
type: string
format: date-time
description: When the event occurred.
data:
type: object
properties:
session_id:
type: string
description: The meeting session this event belongs to.
example: mtgsess_9b2f...
artifact_id:
type: string
description: Id of the failed artifact.
example: mtgart_4e7c...
type:
type: string
enum:
- summary
- action_items
- decisions
- topics
- open_questions
- custom
description: Type of the failed artifact.
description: Failed artifact reference and reason.
additionalProperties: false
required:
- session_id
- artifact_id
- type
additionalProperties: false
example:
id: whdel_9f2c...
event: artifact.failed
version: '1'
occurred_at: '2026-06-16T09:06:00Z'
data:
session_id: mtgsess_9b2f...
artifact_id: mtgart_4e7c...
type: summary
responses:
'200':
description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried.
operationId: MeetingArtifactFailedWebhook
security: []
callAnalyzed:
post:
summary: Call analyzed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.
Delivered after an AI assistant conversation ends and post-call processing completes. The payload consolidates the
conversation''s generated insights, its recordings, and the call''s full cost breakdown (AI Voice Assistant engine
minutes, LLM inference, call control, SIP trunking, recording).'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callAnalyzedEvent'
example:
data:
record_type: event
event_type: call.analyzed
id: afa6f4ac-f569-575b-9127-75a2746cf0ab
occurred_at: '2026-10-15T20:38:46.308491Z'
payload:
assistant_id: assistant-258e1b9b-aa09-5f71-a931-56fd3cf2eb1c
call_control_id: v3:b5aa7d950dfd551e916cc42bee82e56e-510c4d08
call_leg_id: 9f4eec6d-19a9-503f-be41-024cfaf1d5a6
call_session_id: 340a438e-f327-5f36-be97-e5c13bde3a05
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '1294850382059482660'
conversation_id: dc76aa9a-a1c2-5e6b-aed4-6775fe240151
conversation_insights:
- conversation_insights:
- insight_id: 6c5018ff-25a2-5364-b6be-f53de3d493c6
result: The user called the voice assistant to schedule a dental appointment. The assistant confirmed
availability for Tuesday at 10:00 AM and transferred the call to the office scheduling line to complete
the booking.
status: completed
cost:
breakdown:
- cost: '0.050000'
product: ai-voice-assistant
- cost: '0.003600'
product: callcontrol-cdrs
- cost: '0.000900'
product: inference
- cost: '0.000800'
product: recording-cdrs
- cost: '0.005000'
product: siptrunking-cdrs
currency: USD
total: '0.060300'
duration_sec: 37
from: +131****7421
llm_model: moonshotai/Kimi-K2.6
reason: normal
recordings:
- channels: dual
download_urls:
mp3: https://us-central-1.telnyxcloudstorage.com/recordings/06069104-45f7-5d17-9fa7-34cfeb4534fa/2026-10-15/9f4eec6d-19a9-503f.mp3
end_time: '2026-10-15T20:34:52.395814Z'
format: mp3
id: 850f003e-1278-5d6b-baf2-918aae3031dc
start_time: '2026-10-15T20:34:07.955834Z'
stt_model: deepgram/flux
to: +131****4802
tts_model_id: Ultra
tts_provider: telnyx
tts_voice_id: c80920a7-535c-5d39-b630-8ddf52d5a4f0
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallAnalyzed
tags:
- Callbacks
callAnswered:
post:
summary: Call Answered
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallAnsweredEvent'
example:
data:
record_type: event
event_type: call.answered
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
start_time: '2018-02-02T22:25:27.521992Z'
state: answered
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallAnswered
tags:
- Callbacks
callBridged:
post:
summary: Call Bridged
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallBridgedEvent'
example:
data:
record_type: event
event_type: call.bridged
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallBridged
tags:
- Callbacks
callConversationCreated:
post:
summary: Call Conversation Created
description: 'Emitted when a conversation is created for a call, including when an AI assistant starts automatically
after an `answer` command with `assistant.id` or a `dial` command with `assistant.id`, or through `ai_assistant_start`
or `gather_using_ai`. Read `data.payload.conversation_id` and correlate it with `data.payload.call_control_id`.
For the answer-with-assistant flow, the `answer` response does not include the conversation ID. This webhook supplies
it during assistant startup without waiting for `call.conversation.ended` or polling the Conversations API. It is
delivered to the configured Call Control webhook URL and does not require `send_message_history_updates`.
The event indicates that the conversation was created; it does not confirm that the assistant is ready to speak or
that greeting audio has started.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callConversationCreatedEvent'
example:
data:
record_type: event
event_type: call.conversation.created
id: eb8775a6-634f-48b0-b177-d5465a8a8e9f
occurred_at: '2025-05-29T13:35:38.817785Z'
created_at: '2025-05-29T13:35:38.927621Z'
payload:
call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ
call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20
call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '2694492062593582591'
conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe
from: '+13124287921'
to: '+13125550100'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallConversationCreated
tags:
- Callbacks
callConversationEnded:
post:
summary: Call Conversation Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callConversationEndedEvent'
example:
data:
record_type: event
event_type: call.conversation.ended
id: eb8775a6-634f-48b0-b177-d5465a8a8e9f
occurred_at: '2025-05-29T13:35:38.817785Z'
created_at: '2025-05-29T13:35:38.927621Z'
payload:
assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d
call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ
call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20
call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
calling_party_type: sip
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '2694492062593582591'
conversation_id: 0424805b-adc1-4ff8-9f95-e1de6883ecbe
duration_sec: 3
from: '+13124287921'
to: jamesw@assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d.sip.telnyx.com
llm_model: openai/gpt-4o
stt_model: distil-whisper/distil-large-v2
tts_model_id: Natural
tts_provider: telnyx
tts_voice_id: Marissa
reason: customer_disconnect
messages:
- role: assistant
content: Hi, how can I help you today?
timestamp: '2025-05-29T13:35:35.912345Z'
- role: user
content: Goodbye.
timestamp: '2025-05-29T13:35:37.654321Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallConversationEnded
tags:
- Callbacks
callConversationInsightsGenerated:
post:
summary: Call Conversation Insights Generated
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callConversationInsightsGeneratedEvent'
example:
data:
record_type: event
event_type: call.conversation_insights.generated
id: 898e96ef-be63-45aa-9e7d-01332bff9a97
occurred_at: '2025-02-19T17:02:49.371454Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
calling_party_type: pstn
insight_group_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
results:
- insight_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
result: The user inquired about the menu at Ember & Oak. The menu offers various options, including vegetarian,
vegan, and gluten-free dishes, as well as a children's menu. The restaurant also has a daily happy hour
from 4 PM to 6 PM and offers takeaway and delivery services. The user found the information helpful
but had to leave without making any further decisions or requests. No specific preferences or goals
were expressed beyond inquiring about the menu.
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallConversationInsightsGenerated
tags:
- Callbacks
callConversationStartFailed:
post:
summary: Call Conversation Start Failed
description: 'Emitted when an AI assistant requested with an `answer` or `dial` command (`assistant.id`) could not be
started after the call was answered, for example because the assistant ID does not exist. No conversation is created,
so neither `call.conversation.created` nor `call.conversation.ended` is sent for this attempt. The call stays answered:
use this event to continue the call, for example by transferring it, playing a message, or hanging up. `data.payload.reason`
is `invalid_request` when the request was rejected and `service_error` otherwise.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callConversationStartFailedEvent'
example:
data:
record_type: event
event_type: call.conversation.start_failed
id: 3f1c2a9e-8d4b-4c6e-9a7f-1b2c3d4e5f60
occurred_at: '2025-05-29T13:35:38.817785Z'
created_at: '2025-05-29T13:35:38.927621Z'
payload:
assistant_id: assistant-d9082b56-ba2d-4ad1-a50c-58661eb1463d
call_control_id: v3:HDR1vQHx697hpP9xZ0bhlbUOWPFPDtPcxw-nuSMuC6mGVpb0euoklQ
call_leg_id: cc29cce6-3c91-11f0-a8e5-02420aef3d20
call_session_id: cc29c8d6-3c91-11f0-aa7c-02420aef3d20
client_state: g3QAAAACbQAAAAtkYXRhX2NlbnRlcm0AAAADY2gxbQAAAApkZXBsb3ltZW50bQAAAARiYXNl
connection_id: '2694492062593582591'
from: '+13124287921'
to: '+13125550100'
reason: invalid_request
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallConversationStartFailed
tags:
- Callbacks
callCost:
post:
summary: Call Cost
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallCostEvent'
example:
data:
record_type: event
event_type: call.cost
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
billing_group_id: f5586561-8ff0-4291-a0ac-84fe544797bd
status: success
total_cost: '0.0106'
billed_duration_secs: 120
cost_parts:
- call_part: sip-trunking
rate: '0.0050'
cost: '0.0050'
currency: USD
billed_duration_secs: 60
- call_part: call-recording
rate: '0.00190'
cost: '0.0038'
currency: USD
billed_duration_secs: 120
- call_part: call-control
rate: '0.00180'
cost: '0.0018'
currency: USD
billed_duration_secs: 60
occurred_at: '2018-02-02T22:25:27.521992Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallCost
tags:
- Callbacks
callDeepfakeDetectionError:
post:
summary: Call Deepfake Detection Error
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallDeepfakeDetectionErrorEvent'
example:
data:
record_type: event
event_type: call.deepfake_detection.error
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
error_message: detection_timeout
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallDeepfakeDetectionError
tags:
- Callbacks
callDeepfakeDetectionResult:
post:
summary: Call Deepfake Detection Result
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallDeepfakeDetectionResultEvent'
example:
data:
record_type: event
event_type: call.deepfake_detection.result
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
result: fake
score: 0.87
consistency: 94.5
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallDeepfakeDetectionResult
tags:
- Callbacks
callDtmfReceived:
post:
summary: Call Dtmf Received
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallDtmfReceivedEvent'
example:
data:
record_type: event
event_type: call.dtmf.received
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
digit: '#'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallDtmfReceived
tags:
- Callbacks
callEnqueued:
post:
summary: Call Enqueued
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallEnqueuedEvent'
example:
data:
record_type: event
event_type: call.enqueued
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
queue: support
current_position: 5
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallEnqueued
tags:
- Callbacks
callForkStarted:
post:
summary: Call Fork Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallForkStartedEvent'
example:
data:
record_type: event
event_type: call.fork.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_type: decrypted
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallForkStarted
tags:
- Callbacks
callForkStopped:
post:
summary: Call Fork Stopped
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallForkStoppedEvent'
example:
data:
record_type: event
event_type: call.fork.stopped
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_type: decrypted
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallForkStopped
tags:
- Callbacks
callGatherEnded:
post:
summary: Call Gather Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallGatherEndedEvent'
example:
data:
record_type: event
event_type: call.gather.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
digits: '123'
status: valid
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallGatherEnded
tags:
- Callbacks
callHangup:
post:
summary: Call Hangup
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallHangupEvent'
example:
data:
record_type: event
event_type: call.hangup
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
start_time: '2018-02-02T22:20:27.521992Z'
state: hangup
hangup_cause: call_rejected
hangup_source: caller
sip_hangup_cause: '603'
call_quality_stats:
inbound:
jitter_max_variance: '2.74'
jitter_packet_count: '0'
mos: '4.50'
packet_count: '591'
skip_packet_count: '9'
outbound:
packet_count: '0'
skip_packet_count: '0'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallHangup
tags:
- Callbacks
callHold:
post:
summary: Call Hold
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallHoldEvent'
example:
data:
record_type: event
event_type: call.hold
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallHold
tags:
- Callbacks
callInitiated:
post:
operationId: CallInitiated
summary: Call Initiated
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallInitiatedEvent'
example:
data:
record_type: event
event_type: call.initiated
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
direction: incoming
state: parked
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
callLeftQueue:
post:
summary: Call Left Queue
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallLeftQueueEvent'
example:
data:
record_type: event
event_type: call.dequeued
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
queue: support
queue_position: 3
reason: leave
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallLeftQueue
tags:
- Callbacks
callMachineDetectionEnded:
post:
summary: Call Machine Detection Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallMachineDetectionEndedEvent'
example:
data:
record_type: event
event_type: call.machine.detection.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: human
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallMachineDetectionEnded
tags:
- Callbacks
callMachineGreetingEnded:
post:
summary: Call Machine Greeting Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallMachineGreetingEndedEvent'
example:
data:
record_type: event
event_type: call.machine.greeting.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: ended
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallMachineGreetingEnded
tags:
- Callbacks
callMachinePremiumCallScreeningDetected:
post:
summary: Call Machine Premium Call Screening Detected
description: '
This webhook is sent when `answering_machine_detection=premium_ios_call_screening_detection` detects an Apple Call
Screening tone. Premium AMD is then restarted on the screened call; expect another `call.machine.premium.detection.ended`
webhook with the post-screening classification.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallMachinePremiumCallScreeningDetectedEvent'
example:
data:
record_type: event
event_type: call.machine.premium.call_screening.detected
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: screening
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallMachinePremiumCallScreeningDetected
tags:
- Callbacks
callMachinePremiumDetectionEnded:
post:
summary: Call Machine Premium Detection Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallMachinePremiumDetectionEndedEvent'
example:
data:
record_type: event
event_type: call.machine.premium.detection.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: machine
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallMachinePremiumDetectionEnded
tags:
- Callbacks
callMachinePremiumDetectionStarted:
post:
summary: Call Machine Premium Detection Started
description: '
This webhook is sent when Premium AMD starts analyzing the answered call, before the `call.machine.premium.detection.ended`
webhook with the analysis result.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallMachinePremiumDetectionStartedEvent'
example:
data:
record_type: event
event_type: call.machine.premium.detection.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallMachinePremiumDetectionStarted
tags:
- Callbacks
callMachinePremiumGreetingEnded:
post:
summary: Call Machine Premium Greeting Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallMachinePremiumGreetingEndedEvent'
example:
data:
record_type: event
event_type: call.machine.premium.greeting.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
result: beep_detected
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallMachinePremiumGreetingEnded
tags:
- Callbacks
callPaymentCompleted:
post:
summary: Call Payment Completed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallPaymentCompletedEvent'
example:
data:
record_type: event
event_type: call.payment.completed
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-07-27T07:00:00.000000Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
from: +353****5860
to: +131****7420
payment_connector: Default
payment_method: credit-card
payment_card_type: visa
payment_card_number: xxxxxxxxxxxx1111
expiration_date: '1230'
security_code: xxx
payment_card_postal_code: '10001'
result: success
charge_id: ch_abc123
payment_confirmation_code: CONF-98765
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallPaymentCompleted
tags:
- Callbacks
callPaymentProgress:
post:
summary: Call Payment Progress
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallPaymentProgressEvent'
example:
data:
record_type: event
event_type: call.payment.progress
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-07-27T07:00:00.000000Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
from: +353****5860
to: +131****7420
payment_connector: Default
payment_method: credit-card
payment_step: payment-card-number
payment_status: completed
attempt: 1
payment_card_type: visa
payment_card_number: xxxxxxxxxxxx1111
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallPaymentProgress
tags:
- Callbacks
callPlaybackEnded:
post:
summary: Call Playback Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallPlaybackEndedEvent'
example:
data:
record_type: event
event_type: call.playback.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
media_name: my_media_uploaded_to_media_storage_api
overlay: false
status: completed
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallPlaybackEnded
tags:
- Callbacks
callPlaybackStarted:
post:
summary: Call Playback Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallPlaybackStartedEvent'
example:
data:
record_type: event
event_type: call.playback.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
media_url: http://example.com/audio.wav
overlay: false
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallPlaybackStarted
tags:
- Callbacks
callRecordingError:
post:
summary: Call Recording Error
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callRecordingErrorEvent'
example:
data:
record_type: event
event_type: call.recording.error
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
reason: Internal server error
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallRecordingError
tags:
- Callbacks
callRecordingSaved:
post:
summary: Call Recording Saved
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallRecordingSavedEvent'
example:
data:
record_type: event
event_type: call.recording.saved
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
recording_started_at: '2018-02-02T22:20:27.521992Z'
recording_ended_at: '2018-02-02T22:20:27.521992Z'
channels: single
recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
public_recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallRecordingSaved
tags:
- Callbacks
callRecordingTranscriptionSaved:
post:
summary: Call Recording Transcription Saved
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/callRecordingTranscriptionSavedEvent'
example:
data:
record_type: event
event_type: call.recording.transcription.saved
id: 898e96ef-be63-45aa-9e7d-01332bff9a97
occurred_at: '2025-02-19T17:02:49.371454Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
calling_party_type: pstn
recording_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
recording_transcription_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
status: completed
transcription_text: Hi!
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallRecordingTranscriptionSaved
tags:
- Callbacks
callReferCompleted:
post:
summary: Call Refer Completed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallReferCompletedEvent'
example:
data:
record_type: event
event_type: call.refer.completed
id: 4ce4366d-8d87-44be-a00b-942154e9c5f5
occurred_at: '2020-03-30T13:29:44.650000Z'
payload:
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969
call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id: '1289082222292239760'
from: '+35319605860'
sip_notify_response: 200
to: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallReferCompleted
tags:
- Callbacks
callReferFailed:
post:
summary: Call Refer Failed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallReferFailedEvent'
example:
data:
record_type: event
event_type: call.refer.failed
id: fbeb70e0-54eb-4e26-8d19-56b43e66f754
occurred_at: '2020-03-30T13:29:42.130013Z'
payload:
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969
call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id: '1289082222292239760'
from: '+35319605860'
sip_notify_response: 603
to: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallReferFailed
tags:
- Callbacks
callReferStarted:
post:
summary: Call Refer Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallReferStartedEvent'
example:
data:
record_type: event
event_type: call.refer.started
id: fbeb70e0-54eb-4e26-8d19-56b43e66f754
occurred_at: '2020-03-30T13:29:42.130013Z'
payload:
call_control_id: v2:OycMASgvIjsGIAVEx8x3n9rYeKnUJx6a3V8VGhs5futnr17KZhujZA
call_leg_id: 817f7de8-728a-11ea-9ce6-02420a0f8969
call_session_id: 817f8c2a-728a-11ea-9cbe-02420a0f8969
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
connection_id: '1289082222292239760'
from: '+35319605860'
sip_notify_response: 100
to: '+13129457420'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallReferStarted
tags:
- Callbacks
callSiprecFailed:
post:
summary: Call Siprec Failed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallSiprecFailedEvent'
example:
data:
record_type: event
event_type: siprec.failed
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
failure_cause: no_answer
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallSiprecFailed
tags:
- Callbacks
callSiprecStarted:
post:
summary: Call Siprec Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallSiprecStartedEvent'
example:
data:
record_type: event
event_type: siprec.started
id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031
occurred_at: '2021-12-15T14:06:32.059436Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallSiprecStarted
tags:
- Callbacks
callSiprecStopped:
post:
summary: Call Siprec Stopped
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallSiprecStoppedEvent'
example:
data:
record_type: event
event_type: siprec.stopped
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
hangup_cause: normal_clearing
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallSiprecStopped
tags:
- Callbacks
callSpeakEnded:
post:
summary: Call Speak Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallSpeakEndedEvent'
example:
data:
record_type: event
event_type: call.speak.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
status: completed
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallSpeakEnded
tags:
- Callbacks
callSpeakStarted:
post:
summary: Call Speak Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallSpeakStartedEvent'
example:
data:
record_type: event
event_type: call.speak.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallSpeakStarted
tags:
- Callbacks
callStreamingFailed:
post:
summary: Call Streaming Failed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallStreamingFailedEvent'
example:
data:
record_type: event
event_type: streaming.failed
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
failure_reason: connection_failed
stream_id: 1edb94f9-7ef0-4150-b502-e0ebadfd9491
stream_params:
stream_url: wss://www.example.com/websocket
track: inbound_track
stream_type: websocket
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallStreamingFailed
tags:
- Callbacks
callStreamingStarted:
post:
summary: Call Streaming Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallStreamingStartedEvent'
example:
data:
record_type: event
event_type: streaming.started
id: 7d743d69-f7e8-4761-b7d4-8cacf9d3c031
occurred_at: '2021-12-15T14:06:32.059436Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_url: wss://www.example.com/websocket
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallStreamingStarted
tags:
- Callbacks
callStreamingStopped:
post:
summary: Call Streaming Stopped
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallStreamingStoppedEvent'
example:
data:
record_type: event
event_type: streaming.stopped
id: 25dc3731-e51e-4927-a50d-a61cc25984b1
occurred_at: '2021-12-15T14:11:24.613295Z'
payload:
call_control_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
call_session_id: 31f19208-5db0-11ec-9ea7-02420a0d3a69
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
stream_url: wss://www.example.com/websocket
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallStreamingStopped
tags:
- Callbacks
callUnhold:
post:
summary: Call Unhold
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CallUnholdEvent'
example:
data:
record_type: event
event_type: call.unhold
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
from: '+35319605860'
to: '+35319605860'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: CallUnhold
tags:
- Callbacks
campaignStatusUpdate:
post:
operationId: CampaignStatusUpdate
summary: Campaign Status Update
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignStatusUpdateEvent'
example:
brandId: d88dd2aa-1bb9-4ef0-9ec8-1752b80316a5
campaignId: 4b300178-131c-d902-d54e-72d90ba1620j
createDate: CreateDate
cspId: Cspid
isTMobileRegistered: false
type: TELNYX_EVENT
description: Campaign has been marked as dormant
status: DORMANT
responses:
'200':
description: The server must return a HTTP 200, otherwise we will reattempt to deliver the webhook to the failover
URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
conferenceCreated:
post:
summary: Conference Created
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceCreatedEvent'
example:
data:
record_type: event
event_type: conference.created
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceCreated
tags:
- Callbacks
conferenceEnded:
post:
summary: Conference Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceEndedEvent'
example:
data:
record_type: event
event_type: conference.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
reason: host_left
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceEnded
tags:
- Callbacks
conferenceFloorChanged:
post:
summary: Conference Floor Changed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceFloorChangedEvent'
example:
record_type: event
event_type: conference.floor.changed
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceFloorChanged
tags:
- Callbacks
conferenceParticipantJoined:
post:
summary: Conference Participant Joined
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantJoinedEvent'
example:
data:
record_type: event
event_type: conference.participant.joined
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceParticipantJoined
tags:
- Callbacks
conferenceParticipantLeft:
post:
summary: Conference Participant Left
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantLeftEvent'
example:
data:
record_type: event
event_type: conference.participant.left
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceParticipantLeft
tags:
- Callbacks
conferenceParticipantPlaybackEnded:
post:
summary: Conference Participant Playback Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantPlaybackEndedEvent'
example:
data:
record_type: event
event_type: conference.participant.playback.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceParticipantPlaybackEnded
tags:
- Callbacks
conferenceParticipantPlaybackStarted:
post:
summary: Conference Participant Playback Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantPlaybackStartedEvent'
example:
data:
record_type: event
event_type: conference.participant.playback.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceParticipantPlaybackStarted
tags:
- Callbacks
conferenceParticipantSpeakEnded:
post:
summary: Conference Participant Speak Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantSpeakEndedEvent'
example:
data:
record_type: event
event_type: conference.participant.speak.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceParticipantSpeakEnded
tags:
- Callbacks
conferenceParticipantSpeakStarted:
post:
summary: Conference Participant Speak Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceParticipantSpeakStartedEvent'
example:
data:
record_type: event
event_type: conference.participant.speak.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
connection_id: 7267xxxxxxxxxxxxxx
call_leg_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceParticipantSpeakStarted
tags:
- Callbacks
conferencePlaybackEnded:
post:
summary: Conference Playback Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferencePlaybackEndedEvent'
example:
data:
record_type: event
event_type: conference.playback.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferencePlaybackEnded
tags:
- Callbacks
conferencePlaybackStarted:
post:
summary: Conference Playback Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferencePlaybackStartedEvent'
example:
data:
record_type: event
event_type: conference.playback.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
media_url: https://www.example.com/audio.mp3
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferencePlaybackStarted
tags:
- Callbacks
conferenceRecordingSaved:
post:
summary: Conference Recording Saved
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceRecordingSavedEvent'
example:
data:
record_type: event
event_type: conference.recording.saved
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
call_control_id: v3:MdI91X4lWFEs7IgbBEOT9M4AigoY08M0WWZFISt1Yw2axZ_IiE4pqg
call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
channels: single
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
connection_id: 7267xxxxxxxxxxxxxx
format: mp3
public_recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
recording_ended_at: '2018-02-02T22:20:27.521992Z'
recording_id: 4577f9a2-cf0e-44f3-ac57-9f95fb03fa47
recording_started_at: '2021-05-11T10:17:03.692107Z'
recording_urls:
mp3: http://example.com/recording.mp3
wav: http://example.com/recording.wav
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceRecordingSaved
tags:
- Callbacks
conferenceSpeakEnded:
post:
summary: Conference Speak Ended
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceSpeakEndedEvent'
example:
data:
record_type: event
event_type: conference.speak.ended
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceSpeakEnded
tags:
- Callbacks
conferenceSpeakStarted:
post:
summary: Conference Speak Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceSpeakStartedEvent'
example:
data:
record_type: event
event_type: conference.speak.started
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
payload:
connection_id: 7267xxxxxxxxxxxxxx
creator_call_session_id: 428c31b6-7af4-4bcb-b7f5-5013ef9657c1
conference_id: 428c31b6-abf3-3bc1-b7f4-5013ef9657c1
occurred_at: '2018-02-02T22:25:27.521Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ConferenceSpeakStarted
tags:
- Callbacks
deliveryUpdate:
post:
summary: Delivery Update
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessagingOutboundMessageEvent'
example:
data:
record_type: event
id: 86f58db9-0fe3-4adc-9d1f-46e66e6e9323
event_type: message.sent
occurred_at: '2019-01-23T18:10:02.574Z'
payload:
record_type: message
direction: outbound
id: 40385f64-5717-4562-b3fc-2c963f66afa6
type: MMS
messaging_profile_id: 4000eba1-a0c0-4563-9925-b25e842a7cb6
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18445550001'
carrier: TELNYX LLC
line_type: VoIP
to:
- phone_number: '+18665550001'
status: queued
carrier: T-MOBILE USA, INC.
line_type: Wireless
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media:
- url: https://pbs.twimg.com/profile_images/1142168442042118144/AW3F4fFD_400x400.png
content_type: null
sha256: null
size: null
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
meta:
attempt: 1
delivered_to: https://www.example.com/hooks
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: DeliveryUpdate
tags:
- Callbacks
fax.delivered:
post:
summary: Fax Delivered
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FaxDelivered'
example:
data:
event_type: fax.delivered
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
call_duration_secs: 25
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
page_count: 2
status: delivered
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: FaxDelivered
tags:
- Callbacks
fax.failed:
post:
summary: Fax Failed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FaxFailed'
example:
data:
event_type: fax.failed
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
failure_reason: receiver_call_dropped
internal_failure_reason: fs_fax_call_dropped
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: failed
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: FaxFailed
tags:
- Callbacks
fax.media.processed:
post:
summary: Fax Media Processed
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FaxMediaProcessed'
example:
data:
event_type: fax.media.processed
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: media.processed
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: FaxMediaProcessed
tags:
- Callbacks
fax.queued:
post:
operationId: FaxQueued
summary: Fax Queued
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FaxQueued'
example:
data:
event_type: fax.queued
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: queued
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
fax.sending.started:
post:
summary: Fax Sending Started
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FaxSendingStarted'
example:
data:
event_type: fax.sending.started
id: 95479a2e-b947-470a-a88f-2da6dd07ae0f
occurred_at: '2020-05-05T13:08:22.039204Z'
payload:
connection_id: '234423'
direction: outbound
fax_id: f8338808-3dc6-4f2b-942a-5d1f39255784
from: '+17733372107'
original_media_url: http://www.example.com/fax.pdf
status: sending
client_state: aGF2ZSBhIG5pY2UgZGF5ID1d
to: '+15107882622'
user_id: 19a75cea-02c6-4b9a-84fa-c9bc8341feb8
record_type: event
meta:
attempt: 1
delivered_to: https://www.example.com/webhooks
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: FaxSendingStarted
tags:
- Callbacks
hostedNumberOrderEvent:
post:
operationId: HostedNumberOrderEvent
summary: Hosted Number Order Event
description: 'Webhook fired when a messaging hosted number order is created, updated, deleted, or progresses through
the internal-transfer lifecycle (detected, approval requested, approved, rejected, auto-approved). Inspect `event_type`
to distinguish events.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/HostedNumberOrderEvent'
example:
data:
record_type: event
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
event_type: messaging_hosted_numbers_orders.internal_transfer_approval_requested
occurred_at: '2026-04-20T18:10:02.574Z'
payload:
order_id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
order_status: pending
profile_id: d0b1dabe-efdb-4bc8-9dd3-11f0d8b5f5b3
user_id: b448f9cc-a842-4784-98e9-03c1a5872950
numbers:
- value: '+13125550001'
status: pending
decision: pending
approval_deadline: 1714521600
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
inboundMessage:
post:
operationId: InboundMessage
summary: Inbound Message
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessagingInboundMessageEvent'
example:
data:
record_type: event
id: bf6307bd-884d-4c1f-b6ea-c62b8c495d3c
event_type: message.received
occurred_at: '2019-01-23T18:10:02.574Z'
payload:
record_type: message
direction: inbound
id: 7ee4241c-f127-47e5-9c34-3aac291f8058
type: SMS
messaging_profile_id: 0f512bda-ae1e-4597-8e11-e5f5686b97d3
organization_id: b448f9cc-a842-4784-98e9-03c1a5872950
from:
phone_number: '+18665550001'
carrier: T-MOBILE USA, INC.
line_type: Wireless
to:
- phone_number: '+18445550001'
status: delivered
carrier: TELNYX LLC
line_type: VoIP
cc: []
text: Hello, World!
num_chars: 13
subject: From Telnyx!
media: []
webhook_url: https://www.example.com/hooks
webhook_failover_url: https://backup.example.com/hooks
encoding: GSM-7
parts: 1
tags:
- Greetings
cost:
amount: '0.0051'
currency: USD
cost_breakdown:
carrier_fee:
amount: '0.00305'
currency: USD
rate:
amount: '0.00205'
currency: USD
tcr_campaign_id: TCPA3X7
tcr_campaign_billable: true
tcr_campaign_registered: REGISTERED
received_at: '2019-01-23T18:10:02.574Z'
sent_at: null
completed_at: null
valid_until: null
errors: []
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
numberOrderStatusUpdate:
post:
operationId: NumberOrderStatusUpdate
summary: Number Order Status Update
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/numbers_NumberOrderWebhookEvent'
example:
data:
event_type: number_order.complete
id: d578b093-a0e7-4b64-b0d3-6b689a6ff170
occurred_at: '2025-08-22T16:23:54.496464Z'
payload:
id: 12ade33a-21c0-473b-b055-b3c836e1c292
record_type: number_order
phone_numbers_count: 1
connection_id: '346789098765567'
messaging_profile_id: abc85f64-5717-4562-b3fc-2c9600
billing_group_id: abc85f64-5717-4562-b3fc-2c9600
phone_numbers:
- id: dc8e4d67-33a0-4cbb-af74-7b58f05bd494
record_type: number_order_phone_number
phone_number: '+19705555098'
bundle_id: bc8e4d67-33a0-4cbb-af74-7b58f05bd474
regulatory_requirements:
- record_type: phone_number_regulatory_requirement
requirement_id: 8ffb3622-7c6b-4ccc-b65f-7a3dc0099576
field_value: 45f45a04-b4be-4592-95b1-9306b9db2b21
field_type: address
requirements_met: true
status: success
sub_number_orders_ids:
- string
status: pending
customer_reference: MY REF 001
created_at: '2018-01-01T00:00:00.000000Z'
updated_at: '2018-01-01T00:00:00.000000Z'
requirements_met: true
record_type: event
meta:
attempt: 1
delivered_to: https://sample-api.com/webhook
responses:
'200':
description: The server must return a HTTP 200, otherwise we will reattempt to deliver the webhook to the failover
URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
numberReputationExternalVerificationStatusChanged:
post:
operationId: NumberReputationExternalVerificationStatusChanged
summary: Ownership verification reviewed
description: 'The ownership proof submitted for numbers hosted with another provider was approved or rejected.
Sent to the enterprise''s ownership webhook URL (`PATCH /enterprises/{enterprise_id}/reputation/webhook`). This webhook
uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification
for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents.
See https://github.com/standard-webhooks/standard-webhooks for details.'
tags:
- Phone Numbers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NumberReputationExternalVerificationStatusChangedEvent'
example:
data:
record_type: event
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-10-05T07:00:12.521992Z'
event_type: number_reputation.external_verification.status_changed
payload:
record_type: reputation_external_verification
enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6
status: approved
rejection_reason: null
reviewed_at: '2026-10-06T14:03:10+00:00'
meta:
attempt: 1
delivered_to: https://example.com/webhooks/telnyx
responses:
'200':
description: Return an HTTP 200 to acknowledge receipt; otherwise delivery is retried.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Ed25519 signature of the payload - compatible with webhook-signature
schema:
type: string
x-webhook-equivalent: webhook-signature
numberReputationNumberFlagged:
post:
operationId: NumberReputationNumberFlagged
summary: Number ownership needs confirmation
description: 'A monitored number hosted with another provider changed carrier, or its periodic ownership re-verification
is due. Confirm ownership before `confirm_by` with `POST /enterprises/{enterprise_id}/reputation/numbers/{phone_number}/ownership_confirm`.
Sent to the enterprise''s ownership webhook URL (`PATCH /enterprises/{enterprise_id}/reputation/webhook`). This webhook
uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification
for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents.
See https://github.com/standard-webhooks/standard-webhooks for details.'
tags:
- Phone Numbers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NumberReputationNumberFlaggedEvent'
example:
data:
record_type: event
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-10-05T07:00:12.521992Z'
event_type: number_reputation.number.flagged
payload:
record_type: reputation_phone_number
phone_number: '+13125550142'
enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6
source: external
ownership_status: pending_confirmation
flag_reason: carrier_changed
confirm_by: '2026-10-08T07:00:00+00:00'
meta:
attempt: 1
delivered_to: https://example.com/webhooks/telnyx
responses:
'200':
description: Return an HTTP 200 to acknowledge receipt; otherwise delivery is retried.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Ed25519 signature of the payload - compatible with webhook-signature
schema:
type: string
x-webhook-equivalent: webhook-signature
numberReputationNumberRemoved:
post:
operationId: NumberReputationNumberRemoved
summary: Number removed for an ownership reason
description: 'A monitored number was removed from reputation monitoring because its ownership could not be kept verified.
Removing a number yourself with `DELETE` does not send this event.
Sent to the enterprise''s ownership webhook URL (`PATCH /enterprises/{enterprise_id}/reputation/webhook`). This webhook
uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification
for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents.
See https://github.com/standard-webhooks/standard-webhooks for details.'
tags:
- Phone Numbers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NumberReputationNumberRemovedEvent'
example:
data:
record_type: event
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2026-10-05T07:00:12.521992Z'
event_type: number_reputation.number.removed
payload:
record_type: reputation_phone_number
phone_number: '+13125550142'
enterprise_id: 4a6192a4-573d-446d-b3ce-aff9117272a6
source: external
ownership_status: removed
removal_reason: unconfirmed_ownership
removed_at: '2026-10-09T07:00:03+00:00'
meta:
attempt: 1
delivered_to: https://example.com/webhooks/telnyx
responses:
'200':
description: Return an HTTP 200 to acknowledge receipt; otherwise delivery is retried.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Ed25519 signature of the payload - compatible with webhook-signature
schema:
type: string
x-webhook-equivalent: webhook-signature
replacedLinkClick:
post:
summary: Replaced Link Click
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ReplacedLinkClickEvent'
example:
data:
record_type: link_clicked
url: https://telnyx.com
to: '18445550001'
message_id: 7ee4241c-f127-47e5-9c34-3aac291f8058
time_clicked: '2019-04-01T14:45:45.450Z'
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: ReplacedLinkClick
tags:
- Callbacks
sessionStatusChanged:
post:
summary: session.status_changed
description: 'Sent when the session moves to a new lifecycle status. Deliveries are best effort and not guaranteed:
up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per retry, and a 10-second delivery
timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate on envelope `id`.'
tags:
- Meeting Session Webhooks
parameters:
- name: X-Meeting-Bot-Signature
in: header
required: true
description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp
ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time.
Reject timestamps outside your accepted skew. No bearer token is sent.
schema:
type: string
example: t=1784297100,v1=5e8f...a3c1
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- event
- version
- occurred_at
- data
properties:
id:
type: string
description: Unique event id; deduplicate deliveries on it.
example: whdel_9f2c...
event:
type: string
description: Event type.
enum:
- session.status_changed
version:
type: string
description: Envelope version.
example: '1'
occurred_at:
type: string
format: date-time
description: When the event occurred.
data:
type: object
properties:
session_id:
type: string
description: The meeting session this event belongs to.
example: mtgsess_9b2f...
status:
type: string
description: The new session status.
status_detail:
type:
- string
- 'null'
description: Additional detail about the status (for example `cancelled`), or null.
recording:
type: boolean
description: Whether the session is recording at this lifecycle edge.
description: Status transition details.
additionalProperties: false
required:
- session_id
- status
- status_detail
- recording
additionalProperties: false
example:
id: whdel_9f2c...
event: session.status_changed
version: '1'
occurred_at: '2026-06-16T09:00:05Z'
data:
session_id: mtgsess_9b2f...
status: active
status_detail: null
recording: true
responses:
'200':
description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried.
operationId: MeetingSessionStatusChangedWebhook
security: []
transcriptCompleted:
post:
summary: transcript.completed
description: 'Sent when the meeting transcript is finalized and ready to read. Individual `transcript.segment` messages
are never delivered over webhooks; read segments via the transcript endpoint or the WebSocket stream. Deliveries are
best effort and not guaranteed: up to 5 attempts with backoff that starts around 60 seconds and roughly doubles per
retry, and a 10-second delivery timeout, so respond with a 2xx promptly. Retries can produce duplicates; deduplicate
on envelope `id`.'
tags:
- Meeting Session Webhooks
parameters:
- name: X-Meeting-Bot-Signature
in: header
required: true
description: Signature header `t=,v1=`. Compute HMAC-SHA256 with the webhook secret over the timestamp
ASCII bytes, a literal `.` byte, and the exact raw request-body bytes; hex-encode and compare `v1` in constant time.
Reject timestamps outside your accepted skew. No bearer token is sent.
schema:
type: string
example: t=1784297100,v1=5e8f...a3c1
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- event
- version
- occurred_at
- data
properties:
id:
type: string
description: Unique event id; deduplicate deliveries on it.
example: whdel_9f2c...
event:
type: string
description: Event type.
enum:
- transcript.completed
version:
type: string
description: Envelope version.
example: '1'
occurred_at:
type: string
format: date-time
description: When the event occurred.
data:
type: object
properties:
session_id:
type: string
description: The meeting session this event belongs to.
example: mtgsess_9b2f...
segment_count:
type: integer
description: Number of transcript segments observed during finalization.
last_seq:
type:
- integer
- 'null'
description: Last transcript segment sequence number, or null for an empty transcript.
ended_at:
type:
- string
- 'null'
format: date-time
description: Session end time, or null when unavailable.
description: Finalized transcript details.
additionalProperties: false
required:
- session_id
- segment_count
- last_seq
- ended_at
additionalProperties: false
example:
id: whdel_9f2c...
event: transcript.completed
version: '1'
occurred_at: '2026-06-16T09:05:00Z'
data:
session_id: mtgsess_9b2f...
segment_count: 87
last_seq: 943
ended_at: '2026-06-16T09:04:41Z'
responses:
'200':
description: Return any 2xx status promptly to acknowledge the delivery; non-2xx responses and timeouts are retried.
operationId: MeetingTranscriptCompletedWebhook
security: []
transcription:
post:
summary: Transcription
description: '
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptionEvent'
example:
data:
record_type: event
event_type: call.transcription
id: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
occurred_at: '2018-02-02T22:25:27.521992Z'
payload:
call_control_id: v2:7subYr8fLrXmaAXm8egeAMpoSJ72J3SGPUuome81-hQuaKRf9b7hKA
call_leg_id: 5ca81340-5beb-11eb-ae45-02420a0f8b69
call_session_id: 5ca81eee-5beb-11eb-ba6c-02420a0f8b69
connection_id: '1240401930086254526'
transcription_data:
confidence: 0.977219
is_final: true
transcript: hello this is a test speech
responses:
'200':
description: The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
operationId: Transcription
tags:
- Callbacks
whatsappAccountUpdate:
post:
operationId: WhatsappAccountUpdate
summary: WhatsApp Account Update
description: 'Reports coexistence lifecycle changes for a WhatsApp Business Account.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappAccountUpdateEvent'
example:
data:
record_type: event
id: 72f74d14-7506-4de7-bd13-62aacf140fa3
event_type: whatsapp.account.update
occurred_at: '2026-09-02T10:20:00.000Z'
payload:
record_type: whatsapp_account
waba_id: '106540352242922'
event: ACCOUNT_OFFBOARDED
responses:
'200':
description: Return an HTTP 200 to acknowledge the webhook.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
whatsappMessageEcho:
post:
operationId: WhatsappMessageEcho
summary: WhatsApp Business App Message Echo
description: 'Delivers a non-billable mirror of a message sent from the WhatsApp Business app on a coexistence-enabled
number. This outbound event does not open or extend the Cloud API customer service window.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappMessageEchoEvent'
example:
data:
record_type: event
id: 4f923db9-186f-4c6a-9a14-0b6d46e31d77
event_type: message.echo
occurred_at: '2026-09-02T10:15:30.000Z'
payload:
record_type: message
direction: outbound
origin: whatsapp_business_app
id: c7b87bc9-d220-4b2c-916a-83c11ef9821f
type: WHATSAPP
organization_id: 7a7f45eb-6670-45fd-a3e3-5b9e4a4f2103
messaging_profile_id: 4001799e-1457-4c7f-a96a-735ed44c7de7
from:
phone_number: '+13125551234'
carrier: ''
line_type: ''
to: '+18655550001'
body:
from: '+18655550001'
id: c7b87bc9-d220-4b2c-916a-83c11ef9821f
foreign_id: wamid.HBgLMTg2NTU1NTAwMDEFQIAERgSODQ2
timestamp: '1788344130'
type: text
text:
body: Sent from the WhatsApp Business app
tags: []
cost:
amount: null
currency: null
received_at: '2026-09-02T10:15:29.000Z'
errors: []
responses:
'200':
description: Return an HTTP 200 to acknowledge the webhook.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks
whatsappWabaAdded:
post:
operationId: WhatsappWabaAdded
summary: WhatsApp WABA Added
description: 'Reports the outcome of a WhatsApp Embedded Signup session. Telnyx sends it to the `webhook_url` set with
`PATCH /v2/whatsapp/user_data` when the session succeeds or fails.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks
specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature
equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WhatsappWabaAddedEvent'
example:
data:
record_type: event
id: 5d4f8c1a-6b2e-4f3a-9c7d-2e1b0a9f8e7d
event_type: whatsapp.waba_added
occurred_at: '2026-10-01T10:02:11.000Z'
payload:
record_type: waba_account_added
waba_id: '123456789012345'
phone_numbers:
- '+15551234567'
status: SUCCESS
event_id: 019f4253-e09a-7622-bc6f-625378711d78
responses:
'200':
description: Return an HTTP 200 to acknowledge the webhook.
parameters:
- name: telnyx-timestamp
in: header
required: true
description: Unix timestamp (seconds since epoch) of when the webhook was sent - compatible with webhook-timestamp
schema:
type: integer
format: int64
description: Unix timestamp for replay attack prevention
x-webhook-equivalent: webhook-timestamp
- name: telnyx-signature-ed25519
in: header
required: true
description: Base64 encoded Ed25519 signature for webhook verification - compatible with webhook-signature
schema:
type: string
description: Ed25519 signature of timestamp|payload for verification
x-webhook-equivalent: webhook-signature
tags:
- Callbacks