, 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.\n\nThe 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.\n\nThe 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).\n\nSuccessful paid retries are idempotent \u2014 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.\n\n> **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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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.\n\nThis endpoint allows you to send a message with any messaging resource.\nCurrent messaging resources include: long-code, short-code, number-pool, and\nalphanumeric-sender-id.\n",
"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"
}
}
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
}
}
},
"/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"
}
}
}
},
"400": {
"$ref": "#/components/responses/messaging_BadRequestResponse_0b38e7044b"
},
"401": {
"$ref": "#/components/responses/messaging_UnauthorizedResponse_0b38e7044b"
},
"422": {
"$ref": "#/components/responses/messaging_UnprocessableEntityResponse_0b38e7044b"
}
}
}
},
"/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"
}
}
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
},
"description": "Queues an MMS addressed to multiple recipients as a group conversation. Delivery events are reported asynchronously through messaging webhooks."
}
},
"/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"
}
}
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
},
"description": "Queues an outbound SMS or MMS using a long-code sender. Delivery progress and final disposition are reported asynchronously through messaging webhooks."
}
},
"/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"
}
}
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
},
"description": "Queues an outbound message using a number pool. Telnyx selects an eligible sender from the pool according to its messaging profile configuration."
}
},
"/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"
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
},
"description": "Queues an outbound RCS message through the selected RCS agent. Check recipient capabilities before sending features that require RCS support."
}
},
"/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.\n\nThis endpoint allows you to schedule a message with any messaging resource.\nCurrent messaging resources include: long-code, short-code, number-pool, and\nalphanumeric-sender-id.\n",
"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"
}
}
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
},
"description": "Queues an outbound SMS or MMS using a short-code sender. Delivery progress and final disposition are reported asynchronously through messaging webhooks."
}
},
"/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/WhatsappMessage"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WhatsappResponse"
}
}
}
},
"4XX": {
"$ref": "#/components/responses/messaging_GenericErrorResponse_0b38e7044b"
}
}
}
},
"/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.\n\nReturns 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\n\nA request may only be deleted when when the request is in the \"rejected\" state.\n\n* `HTTP 200`: request successfully deleted\n* `HTTP 400`: request exists but can't be deleted (i.e. not rejected)\n* `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.\n\nReturns 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/UnprocessableEntity"
},
"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 \u2014 the request did not carry valid Telnyx API credentials",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 applicationAuthorize My App
My App is requesting access to your Telnyx account.
"
}
}
},
"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\n6a09cdc3-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."
}
]
}
}
}
}
}
}
},
"/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": "Returns jobs whose creation-time customer reference exactly matches the supplied value, not the current reference on a phone number. Only jobs within the lookup window (90 days by default) are returned. Supply a single non-blank string of up to 250 characters, without null characters, using `filter[customer_reference]=yourcustomerrefhere`. An invalid filter value returns HTTP 422."
},
"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/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.\n\nTo 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.\n\nAny or all of a porting orders attributes may be included in the resource object included in a PATCH request.\n\nIf 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).\n\nAs 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.\n\nLimits:\n- Maximum 50 dictionaries per organization\n- Maximum 100 items per dictionary\n- Text: max 200 characters\n- Alias/phoneme value: max 500 characters\n- 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 \u2014 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/UnprocessableEntity"
},
"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/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/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\u2019s 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/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.\nTo 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.
\nFor 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.\n\nThe 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.\n",
"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.
\nFor 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.\n\nThe 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.\n",
"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 \u2014 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.
\nFor 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.\n",
"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.
\nTransitioning to the disabled state may take a period of time.\nUntil 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.
\nThe 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.\n",
"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.
\nThe 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",
"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.
\nTo enable a SIM card, it must be associated with a SIM card group.
\nThe 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.\n",
"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.
\nThe 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",
"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 \u2014 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.
\nTo set a SIM card to standby, it must be associated with SIM card group.
\nThe 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.\n",
"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.\n",
"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.\n",
"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.\n\nThe endpoint supports three credential types, selected with the `credential_type` query parameter. Each type is keyed by a different identifier:\n\n| `credential_type` | Keyed by | Use case |\n| --- | --- | --- |\n| `uac_external_credential` | `connection_id` | A UAC (SIP attach) connection that registers to an external PBX. |\n| `telephony_credential` | `username` | An ephemeral, one-time-use telephony credential. |\n| `sip_credential_connection` | `username` | A traditional SIP credential connection that registers directly to Telnyx. |\n\nThe 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` \u2014 standalone WebSocket transcription via `/speech-to-text/transcription`.\n * `file_based` \u2014 file-based transcription via `/ai/audio/transcriptions`.\n * `in_call` \u2014 live call transcription via Call Control `transcription_start`.\n * `ai_assistant` \u2014 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 \u2014 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 \u2014 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.\n\nSupported engines: `Azure`, `Deepgram`, `Google`, `Telnyx`, `xAI`, `Speechmatics`, `Soniox`, `Parakeet`, `Humain`, `Reson8`, `Cohere`.\n\n**Connection flow:**\n1. Open WebSocket with query parameters specifying engine, input format, and language.\n2. Send binary audio frames (mp3, wav, linear16, or linear32 format, per `input_format`).\n3. Receive JSON transcript frames with `transcript`, `is_final`, and `confidence` fields.\n4. 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).\n\n**Client \u2192 Server:** Binary audio data (mp3, wav, linear16, or linear32, per `input_format`).\n**Server \u2192 Client:** See `TranscriptFrame` and `SttErrorFrame` schemas.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SttServerEvent"
}
}
}
},
"200": {
"description": "WebSocket upgrade successful \u2014 this response is not returned directly. See 101 for frame documentation."
},
"400": {
"description": "Invalid parameters \u2014 engine not supported or missing required fields."
},
"401": {
"description": "Authentication failed \u2014 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.",
"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
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized. The request did not carry valid Telnyx API credentials.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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/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.",
"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
}
}
}
}
}
},
"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
}
}
}
}
}
}
}
},
"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.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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"
}
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized. The request did not carry valid Telnyx API credentials.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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/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.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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"
}
]
}
}
}
}
}
}
}
}
},
"/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.",
"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": "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 or the period is invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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"
}
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized. The request did not carry valid Telnyx API credentials.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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/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.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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"
}
]
}
}
}
}
}
}
}
},
"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.",
"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"
}
}
],
"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.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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"
}
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized. The request did not carry valid Telnyx API credentials.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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/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.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/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"
}
]
}
}
}
}
}
}
}
}
},
"/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\u2019s \u201cpresigned\u201d 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 \u2014 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 \u2014 typically a few seconds, up to a few minutes \u2014 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` \u2014 and the credential-bearing `meta_url` \u2014 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 \u2014 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 \u2014 a request with this `Idempotency-Key` is still being processed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
}
},
"422": {
"description": "Unprocessable entity \u2014 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` \u2014 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 \u2014 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 \u2014 `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 \u2014 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 \u2014 `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 \u2014 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 \u2014 `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 \u2014 including the same token \u2014 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 \u2014 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 \u2014 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 \u2014 `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 \u2014 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 \u2014 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 \u2014 `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 \u2014 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 \u2014 `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 \u2014 `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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 no base64, no JSON envelope \u2014 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": {
"201": {
"description": "Key created"
},
"200": {
"description": "Key updated"
},
"400": {
"description": "Bad request \u2014 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 \u2014 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 \u2014 the value exceeds 1 MiB",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
}
},
"422": {
"description": "Unprocessable entity \u2014 `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 \u2014 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 \u2014 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 \u2014 a database with this name already exists for your organization",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Errors"
}
}
}
},
"422": {
"description": "Validation error \u2014 `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 \u2014 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 \u2014 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 \u2014 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 \u2014 `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 \u2014 `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 \u2014 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 \u2014 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 \u2014 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 \u2014 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\n1758d6ed-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\n1758d6ed-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"
}
}
}
},
"/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"
}
}
],
"responses": {
"201": {
"description": "JWT",
"content": {
"text/plain": {
"schema": {
"type": "string",
"example": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ"
}
}
}
},
"404": {
"description": "Resource not Found"
}
}
}
},
"/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.\n\nResults are paginated with the standard `page[number]` / `page[size]` parameters; the response uses the standard `{data, meta}` JSON:API envelope.\n\nBy 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.\n\nThis 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.\n\nPrerequisite 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.\n\n`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 connection 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": "Iniatiate 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.\n\n**Expected callback events:**\n\nStatus callbacks: `initiated`, `ringing`, `answered`, one terminal status (`completed`, `no-answer`, `busy`, `canceled`, or `failed`), then `analyzed` after post-call processing completes.\n\nConversation callbacks: `conversation_created` and `conversation_ended`.\n\nRecording, AMD, transcription, and deepfake detection callbacks are only sent when those features are enabled.\n",
"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.\n\nSupported providers: `aws`, `telnyx`, `azure`, `minimax`, `resemble`, `elevenlabs`, `xai`, `humain`, `soniox`.\n\n**Connection flow:**\n1. Open WebSocket with query parameters specifying provider, voice, and model.\n2. Send an initial handshake message `{\"text\": \" \"}` (single space) with optional `voice_settings` to initialize the session.\n3. Send text messages as `{\"text\": \"Hello world\"}`.\n4. Receive audio chunks as JSON frames with base64-encoded audio.\n5. A final frame with `isFinal: true` indicates the end of audio for the current text.\n\nTo interrupt and restart synthesis mid-stream, send `{\"force\": true}` \u2014 the current worker is stopped and a new one is started.\n\n**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.\n\n**Client \u2192 Server:** See `ClientTextFrame` schema.\n**Server \u2192 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 \u2014 this response is not returned directly. See 101 for frame documentation."
},
"400": {
"description": "Invalid parameters \u2014 provider not supported or missing required fields."
},
"401": {
"description": "Authentication failed \u2014 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).\n\nAuthentication is provided via the standard `Authorization: Bearer ` header.\n\nThe `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.\n\nSupported providers: `aws`, `telnyx`, `azure`, `elevenlabs`, `minimax`, `resemble`, `xai`, `humain`, `soniox`.\n\nThe 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:\n- `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`.\n- `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` \u2014 Humain has no MP3 output and no format negotiation."
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Base64AudioResponse"
},
"example": {
"base64_audio": "string"
}
}
}
},
"400": {
"description": "Bad request \u2014 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 \u2014 missing or invalid API key."
},
"422": {
"description": "Validation failed \u2014 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.\n\nSome 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 \u2014 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 \u2014 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 \u2014 the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn\u2019t 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 \u2014 the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn\u2019t 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\n3ca7bd3d-7d82-4e07-9df4-009123068320,inbound,forking,0.000800,17.000000\n..."
}
}
}
},
"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/UnprocessableEntity"
},
"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/UnprocessableEntity"
},
"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 \u2014 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 \u2014 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 \u2014 validation error in the request body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"502": {
"description": "Bad gateway \u2014 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. For best results, provide 5\u201360 seconds of clear speech (Ultra accepts up to 60 seconds; Qwen3TTS auto-trims to 10 seconds; Minimax accepts up to 5 minutes). Maximum file size: 5MB for Telnyx, 20MB for Minimax.",
"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 \u2014 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 \u2014 the audio file is invalid, unsupported, or exceeds the size limit.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized \u2014 missing or invalid bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"422": {
"description": "Unprocessable entity \u2014 validation error in the request body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"502": {
"description": "Bad gateway \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 missing or invalid bearer token.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"404": {
"description": "Voice design not found \u2014 the specified `voice_design_id` does not exist.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"409": {
"description": "Conflict \u2014 the voice design has reached the maximum of 50 versions.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"422": {
"description": "Unprocessable entity \u2014 validation error in the request body.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"502": {
"description": "Bad gateway \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 invalid version number.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/voice-designs_ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized \u2014 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 \u2014 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 \u2014 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.\n\n**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\n\nArtificial 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.\n\n## Synchronous mode (default)\n\nWhen `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`.\n\n## Asynchronous mode\n\nWhen `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`:\n\n- **Synchronous** (`background` false/unset): returns `answer` + `citations`.\n- **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/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.\n\nUse 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.\n\nSub-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.\n\nThe 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.\n\nThe 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.\n\nSub-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/UnprocessableEntity"
},
"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/UnprocessableEntity"
},
"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/UnprocessableEntity"
},
"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]\nPrivateKey = \nAddress = 198.51.100.1/32\n\n[Peer]\nPublicKey = qF4EqlZq+5JL2IKYY8ij49daYyfKVhevJrcDxdqC8GU=\nAllowedIPs = 198.51.100.0/29\nEndpoint = 203.0.113.0:51871\nPersistentKeepalive = 25\n"
}
}
}
},
"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.\n",
"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.\n",
"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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 id of the account the resource belongs to.",
"schema": {
"type": "string"
}
},
"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 (\u22651, default 1).",
"schema": {
"type": "integer",
"minimum": 1,
"default": 1
}
},
"BlocksPageSize": {
"name": "page[size]",
"in": "query",
"description": "Page size (1\u2013100, 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\u2014including duplicate, empty, malformed, or overlong values\u2014return 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",
"schema": {
"type": "string",
"enum": [
"carrier",
"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"
},
"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_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
}
},
"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`, 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` \u2014 unlike other engines, Cohere does not auto-detect the language, and rejects unsupported values including `auto`; omitting it defaults to `ar`.",
"schema": {
"type": "string"
},
"example": "en-US"
},
"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_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_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`) \u2014 those formats carry no header metadata. Ignored for container formats (`mp3`, `wav`), which self-describe their rate.",
"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"
}
},
"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_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_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": "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"
}
}
]
}
}
}
},
"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 \u2014 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\nAllowed, 415 Unsupported Media Type). HTTP status matches the error\nand the body `code` carries that same status (e.g. `\"406\"`, not a\nhardcoded `\"500\"`). The explicit `500.json` clause still emits\n`code: \"500\"` for genuine 500s.\n",
"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",
"title": "Resource is being processed",
"detail": "A request with this Idempotency-Key is already being processed.",
"source": {
"pointer": "/header/Idempotency-Key"
}
}
]
}
}
}
},
"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": "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."
}
]
}
}
}
},
"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"
}
}
}
}
},
"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": "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"
}
}
]
}
}
}
},
"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. 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."
}
]
}
}
}
},
"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"
}
}
}
}
}
},
"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."
}
]
}
}
}
},
"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."
}
]
}
}
}
},
"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."
}
]
}
}
}
},
"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_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"
}
}
}
},
"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."
}
]
}
}
}
},
"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-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"
},
"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 \u2014 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 \u2014 missing or invalid API key.\n\nThe 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/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
}
}
},
"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
}
}
},
"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"
]
},
"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.\n\nUseful for derived numeric checks, e.g. `cart_total + shipping > 50`.\nBoth 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"
},
"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:\nhttps://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` \u2014 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.\n\nWhen the edge fires, the conversation hands off to `assistant_id`: the\nactive assistant on the conversation row is rewritten and the new\nassistant's flow starts at its own `start_node_id`. The current turn's\nLLM response is delivered to the user as-is; subsequent turns route\nto 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 \u2014 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 \u2014 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\u2019s 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.\n\nReturns all test configuration details including evaluation criteria,\nscheduling, and metadata. Used when retrieving individual tests or\nafter 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) \u2014 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.",
"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"
]
},
"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.",
"example": "en-US"
},
"model_config": {
"type": "object",
"description": "Additional model-specific configuration parameters. Only allowed with the `deepgram/*` models. Can include Deepgram-specific options such as `smart_format`, `punctuate`, `diarize`, `utterance`, `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.",
"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`.",
"items": {
"$ref": "#/components/schemas/AudioTranscriptionResponseWord"
}
},
"speakers": {
"type": "array",
"description": "Speaker indices heard in this segment. Returned by the `deepgram/*` models when `diarize` is enabled via `model_config`.",
"items": {
"type": "integer"
}
}
},
"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.",
"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-----\nMIIC...\n-----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",
"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"
},
"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": {
"oneOf": [
{
"title": "Stock avatar ID",
"type": "string",
"enum": [
"elena",
"ben",
"jordan",
"lin",
"avery",
"raphael"
]
},
{
"title": "Custom avatar ID",
"type": "string",
"pattern": "^avatar_[a-z0-9][a-z0-9._:-]{0,120}$",
"minLength": 8,
"maxLength": 128
}
],
"description": "Stable identifier of a Telnyx stock avatar or an organization-owned custom avatar. Custom avatar IDs are returned by the Avatars API and use the `avatar_` prefix.",
"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."
}
}
},
"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),\n`10015` (Validation Failed), `10019` (Internal \u2014 import create\nfallback), `40901` (Conflict), `500` (framework/catch-all).\n"
},
"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`).\n\n`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\u201315 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."
}
}
},
"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:\n\n* Set this field to `\"\"` to unassign each number from their respective messaging profile\n* 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:
\n\nbulk_disable_voice - disable voice for every SIM Card in a SIM Card Group. \nbulk_enable_voice - enable voice for every SIM Card in a SIM Card Group. \nbulk_set_public_ips - set a public IP for each specified SIM Card. \n
",
"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:
\n\nbulk_disable_voice - disable voice for every SIM Card in a SIM Card Group. \nbulk_enable_voice - enable voice for every SIM Card in a SIM Card Group. \nbulk_set_public_ips - set a public IP for each specified SIM Card. \n
",
"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 \u2014 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.\n",
"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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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 \u2014 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 \u2014 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 \u2192 select the number \u2192 Voice \u2192 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"
}
}
},
"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:\n- ``rules`` \u2014 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.\n\nAlways 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.\n\nA clause matches when the routing context's value for ``attribute``\nsatisfies ``operator`` against any of ``values``."
},
"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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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 \u2014 run `juicefs format` with the filesystem's `meta_url` before mounting. `failed` means the last lifecycle action failed \u2014 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.\n\nEvaluates to a boolean. Used in edge conditions to gate transitions on\nruntime 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"
}
},
"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 \u2014 no `ModelId` segment.\n\nFor 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).\n\nA directed graph of `FlowNodeReq` connected by `FlowEdge`s. Validation\nenforces unique node/edge IDs, that `start_node_id` references a real\nnode, 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"
}
},
"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\u2019s 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.\n\nThis model defines all the required and optional parameters needed to create\na comprehensive test for an AI assistant, including test configuration,\nevaluation 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.\n\nRequired 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.\n",
"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."
},
"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
}
}
},
"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\n`CreateEmailRequest` EXCEPT it does not accept the reply/forward\nthreading parameters (`in_reply_to_message_id`, `reply_to_all`,\n`forward_of_message_id`) \u2014 those are single-send-only in Phase 1\n(MSG-1491) and are not yet implemented on the batch endpoint. Recipient\nemail addresses must be unique across `to`, `cc`, and `bcc` after\ncase-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\npermit an override. Hard bounces, spam complaints, and invalid-address\nsuppressions cannot be overridden. Requires the `email:override` API scope.\n"
},
"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 \u2014 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` \u21d2 account/domain scope."
},
"domain_id": {
"type": "string",
"format": "uuid",
"nullable": true,
"description": "`null` \u21d2 account scope."
},
"expires_at": {
"type": "string",
"format": "date-time",
"nullable": true
}
},
"description": "`reason`/`source` are forced to `manual_block`/`manual` (ignored if\nsupplied). `scope` is derived. `bounce_category`/`dsn_code`/`meta`/\n`group_id` are not accepted on the public surface.\n"
},
"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).\n"
},
"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\npermit an override. Hard bounces, spam complaints, and invalid-address\nsuppressions cannot be overridden. Requires the `email:override` API scope.\n"
},
"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.\n\nThe reserved sandbox test-recipient domain is `test.telnyx.com`. In sandbox mode, these addresses produce deterministic recipient-scoped lifecycle events:\n\n- `delivered@test.telnyx.com`: queued -> sending -> sent -> delivered\n- `hard-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (permanent)\n- `soft-bounce@test.telnyx.com`: queued -> sending -> sent -> bounced (transient)\n- `complaint@test.telnyx.com`: queued -> sending -> sent -> complained\n- `suppressed@test.telnyx.com`: queued -> suppressed\n- `invalid@test.telnyx.com`: queued -> sending -> failed (invalid recipient)\n- `dkim-fail@test.telnyx.com`: queued -> sending -> failed (DKIM unavailable)\n- `rate-limit@test.telnyx.com`: queued -> sending -> failed (rate limit exceeded)\n\nMatching is case-insensitive for both the local part and the domain and requires the exact domain `test.telnyx.com` \u2014 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,\nthe API sets RFC 5322 `In-Reply-To` and `References` headers on the\noutbound MIME so the recipient's mailbox (Gmail/Outlook) threads it\ncorrectly. The parent is looked up under the caller's account scope;\na UUID belonging to another account yields a non-enumerating 404.\n\nWire-only (Phase 1): the API sets the headers and does NOT resolve or\nmutate `thread_id` on the server side. Messages sent without this\nparameter are standalone (no threading headers injected).\n\nCannot 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\nchange the threading headers \u2014 recipient selection is customer-\ncontrolled (`to`/`cc`), and a thread is not defined by its audience.\nWhen the referenced message has no thread context, reply-all\ndegrades to a plain reply (parent ID only in `References`). The\nresolution engine (separate work) will expand the ancestor chain\nat a later phase with no API change.\n\nOnly 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\nmessages start a NEW thread per RFC 5322 \u2014 NO `In-Reply-To` or\n`References` headers are set on the outbound MIME. The id is\nrecorded in the message's metadata for EDR provenance only.\n\nThe id is validated as a UUID but is NOT looked up against the\nmessage store \u2014 existence is the caller's responsibility (the\nforward is pure metadata; it does not affect delivery). Cannot be\ncombined 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 \u2014 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."
}
}
},
"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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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."
},
"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": "UDP",
"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
}
},
"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"
}
},
"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 \u2192 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 \u2192 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. Please note TLS encrypted calls are not allowed for subdomain calls."
},
"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
},
"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": "UDP",
"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
}
},
"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.\n\n**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.\n\n**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.\n\nCross-field rules:\n- `assistant` cannot be combined with `join_at`; it is available only for sessions that join immediately.\n- `assistant` cannot be combined with `barge_in: true`.\n- `assistant.avatar: true` cannot be combined with `speak_on_enter`; the assistant greets through its avatar.\n- The `assistant` options, including `avatar`, take effect at session creation and cannot be modified later.\n- A digital avatar or Assistant webpage output takes precedence over `camera_image`; the static image is ignored and a URL source is not fetched.\n- 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 \u2014 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).\n\n**Required if sending with a phone number, short code, or alphanumeric sender ID.**\n",
"x-format": "address"
},
"messaging_profile_id": {
"type": "string",
"description": "Unique identifier for a messaging profile.\n\n**Required if sending via number pool or with an alphanumeric sender ID.**\n"
},
"to": {
"$ref": "#/components/schemas/ToNumber"
},
"text": {
"type": "string",
"description": "Message body (i.e., content) as a non-empty string.\n\n**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.\n\n**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.\n\n**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.\n\n**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).\n\n**Required if sending with a phone number, short code, or alphanumeric sender ID.**\n",
"x-format": "address"
},
"messaging_profile_id": {
"type": "string",
"description": "Unique identifier for a messaging profile.\n\n**Required if sending via number pool or with an alphanumeric sender ID.**\n"
},
"to": {
"$ref": "#/components/schemas/ToNumber"
},
"text": {
"type": "string",
"description": "Message body (i.e., content) as a non-empty string.\n\n**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.\n\n**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"
}
},
"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.\n\n**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.\n\n**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.",
"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"
},
"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"
}
}
},
"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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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."
},
"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"
}
},
"description": "A UAC (User Agent Client) Connection registers Telnyx to your PBX \u2014 the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn\u2019t 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."
},
"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
}
}
},
"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 \u2014 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\u2019s 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
},
"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` \u2014 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. Nova-2-only; use `keyterms` on Nova-3.",
"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
}
}
},
"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` \u2014 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": "Nova-3 keyterm prompting. Up to 100 domain-specific terms or brand names to bias recognition toward. Nova-3-only; 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
}
}
},
"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.\n\nEvaluated after every conditioned (`llm` / `expression`) edge regardless\nof declaration order, so it routes the flow whenever none of the node's\nother outgoing edges match. Valid **only** on edges leaving a `tool` or\n`speak` node, where the deterministic step auto-advances and must always\nhave somewhere to go. A tool/speak node with any outgoing edge is required\nto carry exactly one `default` edge so it never dead-ends; a tool/speak\nnode 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 \u2014 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 \u2014 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"
}
},
"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-----\n-----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\u20135000 characters.",
"example": "Re-uploaded the logo as a 256\u00d7256 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\u201310 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.\n- `draft` - newly created; editable; not yet submitted.\n- `submitted` / `in_review` - Telnyx is reviewing.\n- `verified` - approved; phone numbers may be attached.\n- `rejected` - Telnyx rejected this submission; `rejection_reasons` is populated; customer can edit and resubmit.\n- `unsuccessful` - system-side error during processing; customer can edit and resubmit.\n- `suspended` - temporarily disabled (e.g. by an active infringement claim).\n- `expired` - verification expired; customer must resubmit.\n- `infringement_claimed` - a trademark/impersonation claim is open against this DIR.\n- `permanently_rejected` - terminal; cannot be resubmitted.\n- `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\u201335 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\u201310 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",
"tax_document",
"ein_letter",
"trademark_registration",
"website_ownership",
"business_license",
"professional_license",
"government_id",
"utility_bill",
"bank_statement",
"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.\n\nResolved at runtime from the assistant's dynamic-variables context (see\n`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` \u21d2 account scope. Stored on the row; exposed here."
},
"group_id": {
"type": "string",
"format": "uuid",
"nullable": true,
"description": "`null` \u21d2 global; set \u21d2 group-scoped opt-out."
},
"from": {
"type": "string",
"nullable": true,
"description": "`null` \u21d2 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\nsend-time suppression checks as soon as `expires_at <= now()`.\nA maintenance worker later transitions the row to `status: expired`\nand appends an `expired` audit event (normally within 15 minutes).\n"
}
},
"description": "Suppression record. Schema fields hidden by the view:\n`account_id`, `bounce_category`, `dsn_code`, `meta`.\n"
},
"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.\nThis is the creation-failure subset of `skipped_count`;\nparser-rejected rows equal `skipped_count - error_count`.\nOnly when `status == completed`.\n"
},
"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`,\n`block_ttl_days`. Nullable fields use the omit-nullable pattern.\n"
},
"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).\n"
},
"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 \u2014 `old_selector_retained` is false and the returned dns_records carry the new value the customer must publish promptly.\n",
"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.\n",
"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.\n",
"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\nbecomes immutable.\n"
},
"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 \u2014 a draft may be saved incomplete. `account_id`,\n`inbox_id`, `status`, `sent_at`, `sent_message_id`, `reply_to_message_id` and\n`thread_id` are server-owned and ignored if supplied.\n",
"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\nwith recipient rows. Keys are recipient statuses, values are counts.\nExample: `{\"delivered\": 998, \"bounced\": 2}`.\n",
"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 \u2014 there is no default-to-all.\n"
},
"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. Cannot be set if the transport_portocol 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"
},
"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:\n- `commercial` - for-profit business entities (LLC, corp, partnership, sole proprietorship). Most callers fall here.\n- `government` - federal/state/local government bodies.\n- `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:\n- `corporation` - C-corp or S-corp.\n- `llc` - limited liability company.\n- `partnership` - general/limited partnership.\n- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.\n- `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:\n- `corporation` - C-corp or S-corp.\n- `llc` - limited liability company.\n- `partnership` - general/limited partnership.\n- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.\n- `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:\n- `corporation` - C-corp or S-corp.\n- `llc` - limited liability company.\n- `partnership` - general/limited partnership.\n- `nonprofit` - non-profit corporation, charitable trust, or 501(c)(3)/equivalent.\n- `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"
},
"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"
},
"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\u2019s 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": {
"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"
]
},
"ErrorSource": {
"type": "object",
"properties": {
"parameter": {
"type": "string",
"example": "id"
},
"pointer": {
"type": "string",
"example": "/id"
}
}
},
"Errors": {
"properties": {
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/billing-group_Error"
}
}
},
"type": "object"
},
"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.\n\nExtracted 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.\n\nThe expression is computed against runtime dynamic variables and must\nevaluate to a boolean. Prefer this over `LLMCondition` when the rule is\na clean function of known variables \u2014 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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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."
}
}
},
"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.\n\nThe target is either another node in the same flow (`NodeTarget`) or a\ndifferent assistant (`AssistantTarget`). Multiple edges may share a\n`start_node_id`. On calls, `expression` conditions are evaluated before\nthe model turn and take precedence over `llm` conditions regardless of\ndeclaration order, while `llm` conditions are offered to the assistant's\nmodel as transition tools and fire when the model selects one. On chat\nchannels, an `expression` condition that is true when the turn begins\nroutes before the reply is generated; all conditioned edges that remain\nare considered together in declaration order after the reply, and the\nfirst 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 \u2014 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 \u2014 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 \u2014 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 \u2014 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.\n\nEach node carries the prompt, tool scope, and optional overrides for\nmodel/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 \u2014 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 \u2014 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 \u2014 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."
},
"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": "UDP",
"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
}
}
},
"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 \u2014 {} 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 \u2014 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",
"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"
}
}
}
}
}
}
}
},
"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 \u2014 no `ModelId` segment.\n\nFor 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"
}
}
},
"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 \u2014 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"
}
}
},
"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"
}
}
}
},
"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 \u2014 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"
}
}
},
"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 \u2014 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"
},
"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\nof 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\nof 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\nof 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. Please note TLS encrypted calls are not allowed for subdomain calls."
},
"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. Please note TLS encrypted calls are not allowed for subdomain calls."
},
"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.\n\n**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\n(`@example.com`). Values are trimmed and normalized to lowercase.\n",
"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 \u2014 delivering the warm transfer message and asking whether they take the call \u2014 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 \u2014 including where acceptance is unavailable at all (`gather_using_ai`, Conversation Relay or web calls, a conference, or additional invited participants) \u2014 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."
}
}
},
"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."
},
"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\u20132000 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.",
"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"
},
"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": "example-app-sid"
}
},
"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."
}
},
"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 \u2014 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
},
"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": "UDP",
"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
}
}
},
"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\nprompt.\n\nHow the edge is decided depends on the channel. On calls, each outgoing\n`llm` condition is offered to the assistant's model as a transition tool\nalongside the assistant's tools, and the edge fires when the model\nselects it; the platform does not evaluate the prompt itself, and\ninstructions that forbid or discourage tool calls can stop these edges\nfrom firing. On chat channels, the edge prompts are evaluated in a\nseparate model call after the reply, which does not use the assistant's\ninstructions. Use this for fuzzy intents that aren't expressible as a\ndeterministic 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."
}
}
},
"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 \u2014 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 \u2014 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\ncan vary depending on the characteristics the phone number, as well as its current\nproduct configuration.\n",
"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.",
"x-format": "address"
},
"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.\n\n**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"
],
"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.\n\n**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": "RCS webhook message body. Text messages use the text property.",
"properties": {
"text": {
"type": "string",
"description": "RCS text message."
}
}
}
},
"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\u201310 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 \u2014 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.
\nThis 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": 1e-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"
},
"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.\n\nPurely a presentation aid. The runtime ignores `position`; it round-trips\nthrough the API so frontends can persist the graph layout customers\narrange 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.\n\nThe runtime transitions the active node to `node_id` and continues\nprocessing 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.\n",
"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"
}
}
},
"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\nweights to each type. The pool consists of all the long code and toll free numbers\nassigned to the messaging profile.\n\nTo disable this feature, set the object field to `null`.\n",
"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.\nThe higher the weight the higher the probability. The sum of the weights for all number types\ndoes not necessarily need to add to 100. Weight must be a non-negative number, and when equal\nto zero it will remove the number type from the pool.\n"
},
"long_code_weight": {
"type": "number",
"example": 1,
"description": "Defines the probability weight for a Long Code number to be selected when sending a message.\nThe higher the weight the higher the probability. The sum of the weights for all number types\ndoes not necessarily need to add to 100. Weight must be a non-negative number, and when equal\nto zero it will remove the number type from the pool.\n"
},
"skip_unhealthy": {
"type": "boolean",
"example": true,
"description": "If set to true all unhealthy numbers will be automatically excluded from the pool.\nHealth metrics per number are calculated on a regular basis, taking into account the deliverability\nrate and the amount of messages marked as spam by upstream carriers.\nNumbers with a deliverability rate below 25% or spam ratio over 75% will be considered unhealthy.\n"
},
"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\nrecipient. If the sending number becomes unhealthy and `skip_unhealthy` is set to true, a new\nnumber will be chosen.\n"
},
"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\nnumber. If there are no such numbers available, a nunber with a different area code will be chosen. Currently\nonly NANP numbers are supported.\n"
}
},
"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"
},
"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.\n\n**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.\n\n**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.\n\nA page is a snapshot: the counts it reports and the order it is drawn in\nboth move as writes land, so paging through a busy namespace can repeat or\nmiss 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.\n\nReturns a subset of tests based on pagination parameters along with\nmetadata 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.\n\nReturns test run execution results with pagination support for\nhandling 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"
}
}
},
"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 \u2014 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 \u2014 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.\nNote: 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.\n- `submitted` / `in_review` - Telnyx is reviewing the batch this number belongs to.\n- `verified` - approved; the DIR's display identity will be shown on outbound calls from this number.\n- `unsuccessful` - Telnyx rejected this submission; the customer may re-add to retry.\n- `suspended` - temporarily disabled (e.g. by an active infringement claim on the DIR).\n- `expired` - verification expired; re-add to renew.\n- `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"
}
},
"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": "Type of number",
"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",
"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",
"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",
"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
}
}
},
"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\u2011tool 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."
},
"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 \u2014 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.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion 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": "\u02c8t\u025bl.n\u026aks"
},
"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. The DIR's authorizer email must be verified before this is accepted.",
"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\u2013100 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\nempty list. Unknown keys are ignored by the controller.\n",
"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\u2013100 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\u2013100 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\u201350).",
"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 \u2014 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``.\n\nAn 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``.\n\nAn empty ``match`` is a catch-all (always fires)."
},
"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.\n",
"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).
\nMobile 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).\n",
"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.
\nMSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber's operator.\n",
"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.\n",
"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.\n",
"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.
\nThis 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
\nTransitioning 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 \u2014 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 \u2014 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"
]
},
"ScheduledCallSettings": {
"properties": {
"sip_region": {
"$ref": "#/components/schemas/SipRegion"
}
},
"type": "object",
"title": "ScheduledCallSettings",
"description": "Per-call telephony overrides applied when a scheduled phone-call event\ndispatches. Phone-call events only. New per-call dispatch options should be\nadded 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"
},
"Scope": {
"type": "string",
"enum": [
"account",
"domain",
"address"
],
"description": "Derived server-side from `domain_id`/`from`; never trusted from the caller."
},
"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"
}
}
},
"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 \u2014 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`` \u2014 serve a specific version\n- ``rollout`` \u2014 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"
},
"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.\n",
"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).
\nMobile 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).\n",
"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.
\nMSISDN is defined by the E.164 numbering plan. It includes a country code and a National Destination Code which identifies the subscriber's operator.\n",
"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\nmatch the Telnyx TeXML `SipRegion` parameter exactly. Telnyx defaults to\n`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` \u2014 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 \u2014 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.\nNote: 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 \u2014 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 \u2014 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.\n\nUnlike a prompt node, a speak node has no instructions or model \u2014 it isn't\nan LLM turn. Reaching it delivers `message` to the user verbatim (with\n`{{variable}}` interpolation), then routes via outgoing `llm` /\n`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 \u2014 no `ModelId` segment.\n\nFor 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",
"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"
]
},
"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.",
"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"
},
"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 this period. Always `false` in write responses; list the limits to read the block state.",
"example": false
},
"block": {
"$ref": "#/components/schemas/SpendLimitBlock"
},
"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"
]
},
"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"
]
},
"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.",
"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 \u2014 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\u2019ll 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.\n\nOnly the fields present in the request are changed; the rest are left as\nthey 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"
},
"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 \u2014 on the main tool array or on any workflow node \u2014 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 one of the six stock avatars or an organization-owned custom avatar returned by the Avatars API. Supported backgrounds are office, studio, and reception.",
"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"
],
"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"
}
},
"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.\n\nRequired 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.\n\nThis 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.\n\nThis 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`, and don't support `voice_speed`. `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 \u2014 requests outside that range are rejected by the synthesis engine. `KokoroTTS` and `Qwen3TTS` accept the field but do not apply it. `Bayan` and `Sukhan` don'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.",
"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 \u2014 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\u201310 seconds of clear, uninterrupted speech. Maximum size: 5MB."
},
"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 \u2014 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: 5MB."
},
"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 (40 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"
}
}
},
"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"
}
},
"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.\n\nProvides comprehensive information about a test execution including\nstatus, timing, logs, and detailed evaluation results."
},
"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.\n\nReturns a list of distinct test suite names that can be used for\nfiltering 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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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\u2019ll 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": 1e-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": 1e-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 \u2014 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 \u2014 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 \u2014 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 \u2192 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.\n\nUnlike a prompt node, a tool node has no instructions or model \u2014 it\nisn't an LLM turn. Reaching it deterministically runs one shared tool\n(arguments filled from matching dynamic variables by name), then routes\nvia outgoing `llm` / `expression` edges, with exactly one `default`\nfallback edge required when the node has any outgoing edges (the\ntool's outcome is readable as `telnyx_last_tool_status_code` in\n`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 \u2014 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 \u2192 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 \u2014 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.\n\n- `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.\n- `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.\n- `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:\n\n- `deepgram/flux` (or `flux`) for live streaming turn-taking.\n- `deepgram/nova-3` and `deepgram/nova-2` for live streaming transcription.\n- `speechmatics/standard` and `speechmatics/enhanced` for live streaming transcription.\n- `assemblyai/universal-3-5-pro` for live streaming transcription. The legacy alias `assemblyai/universal-streaming` is still accepted and resolves to the same model.\n- `xai/grok-stt` for live streaming transcription.\n- `soniox/stt-rt-v4` for live streaming multilingual transcription with automatic language detection.\n- `nvidia/parakeet-v3` for multilingual transcription with automatic language detection.\n- `omi-health/omi-med-stt-v1` for English-only medical transcription (Parakeet-based).\n- `humain/realtime` for live streaming transcription with native Arabic and Arabic/English code-switching support.\n- `reson8/turns` for live streaming turn-based transcription of 10 European languages with automatic language detection.\n- `cohere/ar-stt` for non-streaming Arabic and English transcription.\n- `azure/fast` and `azure/realtime`; Azure models require `region`, and unsupported regions require `api_key_ref`.\n- `google/latest_long` for non-streaming multilingual transcription.\n- `distil-whisper/distil-large-v2` for lower-latency English-only non-streaming transcription.\n- `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",
"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 \u2014 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."
}
}
},
"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/DeepgramNova3Config"
}
],
"discriminator": {
"propertyName": "transcription_model",
"mapping": {
"deepgram/nova-2": "#/components/schemas/DeepgramNova2Config",
"deepgram/nova-3": "#/components/schemas/DeepgramNova3Config"
}
}
},
"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.",
"type": "string",
"enum": [
"speechmatics/standard"
],
"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",
"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.\n\n- `deepgram/flux` is optimized for turn-taking with multilingual language hints.\n- `deepgram/nova-3` is multilingual with automatic language detection.\n- `deepgram/nova-2` is Deepgram's previous-generation multilingual model.\n- `azure/fast` is a multilingual Azure transcription model.\n- `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.\n- `xai/grok-stt` is a multilingual Grok STT model.\n- `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`.\n- `nvidia/parakeet-v3` is a multilingual transcription model with automatic language detection.\n- `omi-health/omi-med-stt-v1` is an English-only medical transcription model (Parakeet-based).\n- `humain/realtime` is a streaming model with native Arabic and Arabic/English code-switching support.\n- `reson8/turns` is a turn-based streaming model covering 10 European languages with automatic language detection.\n- `cohere/ar-stt` is a non-streaming Arabic and English transcription model.\n- `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 \u2014 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."
},
"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
},
"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 \u2014 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 \u2192 select the number \u2192 Voice \u2192 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.\n\nOptional 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.\n\nOptional 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."
},
"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"
}
},
"description": "A UAC (User Agent Client) Connection registers Telnyx to your PBX \u2014 the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn\u2019t 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"
]
}
}
},
"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 \u2014 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\u2019s 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.\n\nAll fields are optional, allowing partial updates of test configuration.\nOnly 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.\n\nRequired 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.\n",
"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."
},
"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
}
}
},
"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 \u2014 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.\n"
},
"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"
}
}
}
},
"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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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."
},
"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": "UDP",
"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
}
},
"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"
}
},
"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."
},
"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": "UDP",
"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
}
},
"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.\n\nThis 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:\n\n* Omit this field or set its value to `null` to keep the current value.\n* Set this field to `\"\"` to unassign the number from its messaging profile\n* 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:\n\n* Omit this field or set its value to `null` to keep the current value.\n* 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"
},
"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"
},
"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. Please note TLS encrypted calls are not allowed for subdomain calls.",
"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."
},
"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
}
},
"description": "Parameters that can be updated in a UAC connection. A UAC (User Agent Client) Connection registers Telnyx to your PBX \u2014 the opposite of a standard SIP trunk, where the PBX registers to Telnyx. Use UAC when your PBX doesn\u2019t 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\na public URL shortener service. Some examples include bit.do, bit.ly, goo.gl, ht.ly,\nis.gd, ow.ly, rebrand.ly, t.co, tiny.cc, and tinyurl.com. Such URLs are replaced with\nwith links generated by Telnyx. The use of custom links can improve branding and message\ndeliverability.\n\nTo disable this feature, set the object field to `null`.\n",
"properties": {
"domain": {
"type": "string",
"example": "acct.fyi",
"description": "One of the domains provided by the Telnyx URL shortener service.\n"
},
"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.\n"
},
"replace_blacklist_only": {
"type": "boolean",
"example": true,
"description": "Use the link replacement tool only for links that are specifically blacklisted by Telnyx.\n"
},
"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.\n"
}
},
"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\u2019s 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\u201310 strings, each \u226464 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`\npoints to one of the following channel ids;\n---\nverify_channel_type | verify_channel_id\n------------------- | -----------------\nsms, psd2 | messaging_id\ncall, flashcall | call_control_id\n---\n",
"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 \u2014 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",
"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: 5MB for Telnyx, 20MB for Minimax.",
"oneOf": [
{
"$ref": "#/components/schemas/TelnyxQwen3TTSClone"
},
{
"$ref": "#/components/schemas/TelnyxUltraClone"
},
{
"$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 \u2014 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 \u2014 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 \u2014 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.\nTo 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).\nThe 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"
}
}
},
"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` \u2014 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 \u2014 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."
}
}
}
},
"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).
\nMobile 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).\n",
"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.
\nThis 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.\n",
"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.\n",
"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
}
},
"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 \u2014 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 \u2014 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 \u2014 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.\nTo 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.\nThe 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` \u2014 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 \u2014 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\u2019ll 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 \u2014 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.\n\n**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.\n\nThis 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_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_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_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.\nNote: 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_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.\nNote: 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",
"enum": [
"speechmatics/standard"
]
},
"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"
}
}
}
}
}
}
}
},
"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.",
"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
}
}
},
"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"
},
"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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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).\nThis 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.\nThis 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).\nThis 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).\nThis 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).\nThis 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.\nThis 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.\nThis 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.\nThis 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.\nThis 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": []
}
},
"callAnswered": {
"post": {
"summary": "Call Answered",
"description": "\n\nThis 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": "\n\nThis 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`.\n\nFor 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`.\n\nThe event indicates that the conversation was created; it does not confirm that the assistant is ready to speak or that greeting audio has started.\n\nThis 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": "\n\nThis 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": "\n\nThis 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.\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\nThis 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.\n\nThis 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": "\n\nThis 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": "\nThis webhook is sent when Premium AMD starts analyzing the answered call, before the `call.machine.premium.detection.ended` webhook with the analysis result.\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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": "\n\nThis 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.\n\nThis 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": "\n\nThis 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": "\n\nThis 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.\n\nSent 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`.\n\nSent 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.\n\nSent 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": "\n\nThis 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": "\n\nThis 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.\n\nThis 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.\n\nThis 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.\n\nThis 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"
]
}
}
}
}